{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#本章需导入的模块\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import warnings\n",
    "warnings.filterwarnings(action = 'ignore')\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "from sklearn.model_selection import train_test_split,KFold,cross_val_score\n",
    "from sklearn import tree\n",
    "import sklearn.linear_model as LM\n",
    "from sklearn import ensemble\n",
    "from sklearn.datasets import make_classification,make_circles,make_regression\n",
    "from sklearn.metrics import zero_one_loss,r2_score,mean_squared_error,accuracy_score\n",
    "import xgboost as xgb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x239f1697588>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEUCAYAAAAiMOHqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3hURduH79nNppACSGgh9E4oSpEiYJTQS+gIvL4EUERpghVeQSwgKjaK8NGCIqCIQOidgNKkhFAlQAidhBTTy2Yz3x9nd9MhlJBA5r6uvXLOmTlznnN2M8/MMzO/I6SUKBQKhaLooStoAxQKhUJRMCgHoFAoFEUU5QAUCoWiiKIcgEKhUBRRlANQKBSKIopyAIp7IoRwKmgbFArFo0c5gCKCEOJ/GbYbCSGGmbdHCiG63eW8DsDWe5QdJoQw3Kc9eiFETyHEaSGEpxBiuBBixf2UcY/yRwohfsxj3mQhhMglzVcI0SWXNHshRPOHsfNpRQjxqxCifx7ytRFC7LpL+mUhRLFHa53Cgk1BG6B4bLwKTDNvXwCGCyFsgKFAR0smszOYAqSYD+mB+kKIv8z7dsAOKeWkDGWnSCmN5vMvAbEZ0p4BFkkpPzWndwS6AL2BssCXwFWgYoZrWhFCrAEaAnG53NczwO9SyneEEMWBKVLKd4AkwCiE+AOomaFsASRIKdtkKOOWlFIKIaoCloUxN8z3ZAKMGewZC3gB1czP4pwQoq+UMpvtGc5ZAdyUUr6bS3oI4CmlDMklfSrwLtpzTQamSimX5na9R4kQIhLt+8mNSsAQKeUGIcTzwLNSygVoz18nhLiIZrfJnN8G2GX+jjDnizQ3ICoDqYBJSnnNnJ7p+SseLcoBFB0SAIQQdYBf0CrUW8BFYJcQ4oiUciTgAvwlpZwghHgGMEgpQ4UQOqCxlPKopUDzMWHetvyWkoH1QJp5/1kyV+yuaP/0I4CfpJSTzee3ysVuI/CalNI/p0QhhA9Qx7yrB/oB75ivnyql7JMlvzuw37ytN9ufJISwB35CcyhVgRrm52NxbHoppQnYiNYj+hD4WUrpLzQyOj4XoK6UMtm8/xJwO5f7yytzpJQfCiEqACeEEBullOEPWaYVIcSzQBUp5bosSUYp5bN3OW8p6RW0O9AaWID2/OOllDWy5P8P0N68bUB7/slolf8W87YBqG25PipSkW8oB/CUY25xvwfUFkJsAsZKKZua045KKVsKITyBQZZTACmEsEOrTCug9QgANgohygM25tZxe+BToDTwF/A1WiXsR3qLL81cJgBSyuXAcrNzseS5G5YK+FlgUZY0Sys+NcO1LI7HAc3R5ISlld8amIvWmj8opXzOfK1jwGhzb6g80A3wEULsBq5KKVOFECnmvJb/IZOlohRCXM9gtwdaC7qMEKKUlDIiD/ecK1LKG0KIG0B14JE5ADRH7QlkcwAAQojhwJsZjp+VUv7XvP2gz38cMAooDiRKKWsKIcoAy4QQW9F6iFWA00KIRlLKhAe4L8VdUJ71KUdKuQ34ArgjpewKBAshzptDOrXNf78GYsynCLR/aH+0lvR/hRD+wG6gJLAX+MRStpSyOXAHrTJdC6xEcxyvmD8uQCCAEMLO3GsAsCWXrr15fCDrmIIB+EdK2dTswFxJr3hyohhay16XoZLO+mz2ooXGwqSUzwkhZgshGgBJUsr/oVWKq4ChUspdQDngL/MzexWYjdab6EN6xWcp27LfDu1Z/onWE8Bs0zwhxC0hxHLzvVnu/RMhxA0hxFUhxKs5PJt6aC3tC+b998x5zwshOmco/xtzOYFCiGbm4w5CiLVCiNtCiCAhxAvm4yHAD8AAc9qUrNdF6xnNNz/7vmgO6G5Ynr+NuaeVDSnlTGAWsBl40xyuawycBrqYHfIltN6UqvzzAdUDKBq8CtgKIXzRYsm3pJSe5h5A6yx57dEqwJZCiBFAC2CJOW2VlLJtxszmlrw9WkV4CGgLxKPFx1PRWvkvmQfyWgDdhRASzQGUE0L8Yy7KBXAUQrREa5isJL3nAemtRu5xzEJp4ArQAPhZCJFqzp/VsXQDigkh/g/4Fi28s1EIMQ04k+liUt4CWgghyqK16r8CDkgpLwkhPsnFjpfRQiLl0ZzBarQKtDFaqKkr5t6XEKISWq+mFlqr+DiwzFzOaCHEUKAM2hhApBDCCxgCNDKXv1sI0Qjojua8qgOtgN+FELWBzmg9Oje078kL2C+lrGIOpXlKKX1yuY+sz/peImKlgTDABxglhLD09p4B9mXI1w2tBzYcLXToC4w238uQe1xD8ZAoB/CUI4SojDZQdxNwQhv0rW4Oc9TLMLhrI6VsATgCYUIIW+AE2j+sxUnMyFK2pRXsCHSSUkYJIeyllElCiF/QBn/9M5yyGs0BIYToBIyXUnY07/8H8LpLBWQPdBFCnDDvu6E5mYwYSP9NPw9skFIGolWQFpvd0cJVlhj0ACAKLXTlAQShjY/8AvyB1nrPyqfmPHWBD8yDn9kwt3zbAhanFmVOagWsllImAX8IIf4FkFJeFUK8jdbzegktBGLBMgZQHfAXQuxBq9B/kVJGAVFCiMNoDqQzsNBc/m4hRDSaIwxEG2yfjtaj+ywnu3PBHpgihBiN5rzjc8hjAGzM4cPqwCUp5XkyhO4s37N5u47Zrj3Aa8BAtN9SHLAC+Og+7FM8ACoE9PTzCvCdefst83Z9tNZ5iJSytbkXYKk4K6A5i6/QWuGvA53Mny+FEAMzlH0LrXcRaq6EAA4JIVwtGXIJ52Au1y+vNyGl/EtK+YyU8lnzx1ZKmbUSSgSmm51eTeDwPYr1AbahhaLGo7XqS6LNitKhhUUyrYEwt7oboTmH7WgVaY7TRIEmwGUpZVkpZWnASQhREfM4S4Z8aeay26CF0YLNtuX0HC4BBwHL9NOM5cgM+9mOm89tiBZieRettZ0npJSfSykrmZ99PSllsxyynQZ+A/qjzfS5W4gOYDIwD+35W35jW4CZ5nJO59U+xYOhHMDTz7dSyg0AUso7aLHZdWjTL+NBi82jDdqBVrldlFK+jdbyj0T7h14ErJNSrrQULKXcaSnbXE55oEKG2SmWGPmojAYJIcagzfJYmAf7c5yfn1MeKWUcWoWyAM3RVRVCXBBCBAghjgohjgKbMpT5O/C5edsOWApMACYCo6SU/0f62AjmMMoi4L+kx/zfllKuBspnuEYZc9rLZHZCh83H/gZ6m8dEvNF6WaBV6n+jOd7c1h6UQwulnUerLAcLIUqYW9PN0Xo3W9Cm+doJIV4ESqANpA5Fa1WvQOvNtchQdDjaTBwyOnDu7/mfQwsDTgO+EUIMFkL8I4Q4luHZfJqhzMmA5fdTE3gbGIk206qTlPKHPFxb8RCoENBTjmV+Ptqc7DbA/wGzpZRrhBAfmWPzfwJrhDaPvi7m2LeU8pYQ4mPgKBCBFrrICUtDYiwghDZvvSQwJmMIyOxopqDFvNtmsA1yr2gMwI9CiNwGAUuhDdQihHBGq8QFMMs8EFszY2ZzCOiI+f7+NR+zQZsBs1RKaQkP7cxyb6CNKQySUgYJ87qxDIO94RlmV103l9kOLZRk4bD52FA0R3AVrcK0TBFdjRbTv2m+pzghRC1zmmUMIM1c5gbz2oVlwEm0GTfDzFN2l6B9j8FoFXs/KWWyEGI10Mt8vQS02WEWtgGvCSFC0Xp2lqmfenPFnRtV0FrrmG1dgxZ+OgYcA5ZnzGwOAXU1P7tgs7MRZruGm8OIH5mn3IJqpOYvUkr1KQIftPn+VYGXMhw7A9hn2H8FmIMWt/4KrbW8Ey08ssScfzdaC7UC2j/uPrS4eW8gBC02/xbaP/9t4DoQbU5vhlZZuOZg32vAyhyOfwPUu8t99QDeMW+7ovU6nO6S3wHomeVYaC553wFuANVySFsKdMywXz3DtktBf9+P8Hez9R7pnwIvmrebAh/fI39loFWG/TZo4yE55V0NHCvoZ/A0f4T5QSsUgHVg1BUtFHRMamGjjOnVgJpSm16KEKImWkvWFigh01dwPvGYn0WqVP8kBYIQwk6mL6ZT5APKASgUCkURRcXXFAqFooiiHIBCoVAUUZQDUCgUiiLKEzUN1NXVVVapUqWgzVAoFIonhmPHjoVLbSFiNvLVAZg1U1bLzNrrGdMNaPOGnwEWSymX5JTPQpUqVTh69G5TkhUKhUKRESHEldzS8i0EJIQoiaav7niXbGPQphq+APQ1L+RRKBQKxWMgP8cATGhCWzF3yeOJeRUn2oKipvloj0KhUCgykG8OQEoZI6WMvkc2R7SVlqBpzpTNmkEIMcKiI3Lnzp2syQqFQqF4QAp6EDgObWl+NJrqYrb3vkrt/aILAJo2bapWrSmeKIxGI9evXycpKbeXYykUjwZ7e3vc3d0xGHIS382ZgnYAx9AUJ1ejSQ8cKlhzFIpHy/Xr13F2dqZKlSpYBOQUikeNlJKIiAiuX79O1apV83zeY1sHIIR42fwyiYz8BHwihPgBqMe99dsViieKpKQkSpUqpSp/Rb4ihKBUqVL33dPMdwcgpfQ0/90tpZyTJe0K2ovF96O9DSovLwm/L1KjoojZupWYHTseddEKRZ5QlX/hJyQk5KHLSE7OrFsXHBz80GXeDw/yOyvwlcBSyptSylV5GDB+IFIuh3Dj7fFEzJufH8UrFIqHpFq1anh6eub4admyZbb8DRs2xGg0kpaWlkNpsHLlSr799ttsx/fv38+kSZOyHf/yyy85fvw4AHPnziU+Pqe3XWYmNDSU995Lf51CREQEPXv2zJRnw4YNrFix4p5lFSQF7gDyG9uqVQBICQlBKZ8qiiqRkZE4OztnCxFMnToVf3//HM/x8fHhueeew9PTkwEDBmAyPXwH/cSJE5w4cSLTsUqVKuHv75/jx97eHoBLly4xefJkABwdHZk5cyYdO3akU6dOdOrUibJly3LhwgVMJhN6vZ4SJUqwYMEChgwZwn/+8x8AbGxsMBgMmRxHSEgI165do3fv3gDUqVMHb29v4uPjmT17Nv7+/mzfvp2YmBhGjhxJaGgoAL6+vjRv3pzjx48zcOBA+vfvT0REBD4+PgwaNIigoCDGjRvHpk2biI2Nfejnll8U9CBwvmNTsiRGZwcMsQmkht3BULbMvU9SKJ4yduzYQVJSEvv27aNDhw55Pm/27Nm0bt2akSNHsn37djp37vxQdlgq/2effdZ6zMZGq4Z8fHy4fv06AB4eHvzwww/o9XpAm0117do1a/6JEycyceJEaxk9e/bEYDCwceNGPvroI/R6PT/++CMjRoyga9eu9OnTh6tXrxIaGkqLFi2s97Fs2TJGjUp/Y2m7du1wcXHBzs6OtLQ0TCYTfn5+1KpVCxsbG/R6PUlJSQQEBDB69Gi8vb3ZuXMnffv2xc/PDyenTK+Q5j//+Q/r1q3j1Vdffajnll889T0AgES3kgCkXL5cwJYoFAXD1q1bGTVqFFu3biUqKgovLy9eeukla+s/Li6OTp060aZNG4YOHZrt/PDwcBwdHUlOTmbgwIG8+OKLDB48mJSUlByPJSYm0q1bN9q2bUuvXr1ITU1l4sSJzJgxgxkzZtCuXbscr7Fz50527txJYGBgrvdieZtVSkpKtjRvb2+6dOnC2LFjCQ8P59tvv8XNzY1Zs2Yxb948hg0blsmJXbp0ibp16wKwYMECunfvzoEDB6xOCbLH1ufMmUNERAS9e/emV69etGnThlOnTvHCCy+wZcuWTHlbtGhBQEBArvdS0BQJB6Cr5A5ASohyAIqiycGDB/noo4/YtWsXCxYsoFu3buzZs8c6Z/zWrVuMGTOGnTt3EhISYg11jBkzhjp16nDz5k1atmzJwoULqV+/Pnv37qVmzZosWbIkx2Nnz55Fp9Oxb98+hg4dSlxcHF988QUffvghH374Ibt27Xqg+4iJicHFxYVr167RsWNHaxjo4MGDgOYcNmzYwLfffkv58uVZu3YtrVu3ZvDgwYSFhd217BEjRvDBBx8QEREBQGJiYiZHYGHYsGF8//33uLq6Mnr0aNq2bcuyZcsYOnQoBoOB1NRUa14HBwcSExMf6F4fB099CAjAqXot2PG36gEoCpwVh6+y8u+rAAxpVYUaZZyYvO40AM2qPMOkLnXo9eMBABxs9ax6oyXvrAokKFSLI88a+Bz+58NYc1xbQD+ibTW6N3K76zVPnjxJeHg4ffv2JSQkhKCgIGtcvGlTTX3FYDCwaNEifH19iYyMtFZas2fPplWrVowfP54ZM2Zw69Yta7y8RYsWbNmyBaPRmO3YG2+8Qf369enQoQM1a9akU6dO93w2JpMJT09PAMqWLZstLTU1lePHj9OwYUMqVarEnj17rOmWAdj169dTokQJhg4dyunTpylWrBj79u1j3LhxLF++nJo1a2Yq18HBgbi4uEyhG51OaxcHBwfTp0+fbHaWLFmSCRMmMGHCBE6fPs3p06cJDAwkJCQEZ2dnnJ2dWbt2LU5OTly+fJmKFSve894LiiLhAErXacQdfiFZOQBFATOoeSUGNa+U6diGMa3vuv9N/0aZ9qu6VmXoC3lf7LNt2zYmTZrEhAkTmDx5MgaDgTNnzvDSSy9x4sQJOnbsyOLFi+nbty/9+/fnxRdfzHS+TqejZMmSxMbG4uHhwaFDh/Dy8uLQoUN4eHhgNBqzHQsMDOSFF15g+vTpDBo0iD///JN27drh4OBgbWFLKRFCWAdls4ZPLHkAKlasyLhx45g9ezbjxo3DaDTmuOJVCMFbb72FXq/HYDDQtGlTwsLCKF26NOPGjWPz5s2Z8nfp0oU//viDIUOGWI9FR0eze/dugoKCsjkMgDNnznD+/Hl+/vln2rVrx+LFi/Hz8yMuLo7ixYtjMBisDmXVqlX06tUrz9/V46ZIOADnmnW5A6RcvFTQpigUj51t27Yxc+ZMAF5++WWmTZuGyWRi9erVGI1GANq3b89bb73F/PnadOkbN7QexpgxYyhWrBgAK1asoFy5cvj4+NC2bVsqVqzIpEmTkFJmO5aQkMAHH3zAtGnTsLe3t/Y02rdvT//+/Vm+fDlffPEFbdu25fr163h5eeVou2XWkiXsYzQaadKkCV27diUpKckanz958iQmk4kePXqwevVqbty4wYYNG9iwYQOxsbG4uLhw+vTpbOV369aNAQMG0LlzZ8qUKUNycjK+vr6UK1cODw8PAOszsow9VKtWjenTp7Njxw62bdvGwoULmThxIocPH6ZChQp89dVXNGrUCDs7O27cuEHDhg0f/kvMLyw39SR8mjRpIh+ENKNRBtavK8/WriNTo6MfqAyF4kE4e/ZsQZtQ6Dl27FiuaUeOHJFSSnn+/HnZsmVLGZ3L/+8nn3wir169KqWUcsWKFXLevHmZ0lNSUmTLli3lqlWrsp177do1uXz5cimllL/++qucN2+eHDFihLxx44aUUsqEhARpMpnkyJEj5fXr1+XatWvle++9J8+ePSt/+uknuXnzZrl69WrZoEEDeeHCBXny5En522+/yXnz5uVqb36R0+8NOCpzqVOFfILmxjdt2lQ+6Ath/ur8AqUuR1Lp559wfP75R2yZQpEz586ds84yUTwcljn+D0pqamqOg7qPgvj4ePR6vXXdQkGR0+9NCHFMSpmj1H6RmAUEYKquxV2T//mngC1RKBQPwsNU/kC+Vf6gLU4r6Mr/QXjqxwCSE+K5dOxv4l21WQVJ55QDUCgUCigCDiAxNpYtc77B0cWFqkDSuXMFbZJCoVAUCp76EJC9eTqW0ZiKSQfJFy6QlpBQwFYpFApFwfPUOwA7h2IIoSMlMYGw8sXAZCLpzJmCNkuhUBQiLHLQdxNuCw4OJioqKtd0y+ppy8Saxy0H/SA89Q5A6HTY2DkAEFNTWzGZkEWNUKFQFByFRQ46Li4OLy8v/P396devHz4+PgwYMMCq5bNkyRICAgKQUjJp0qRsWkSdO3dm06ZNjBs3DlBy0IUGvY3mAHTmVX2JdxGaUiieRpQc9L3loJ2cnNi8eTPu7u7o9XqmTZtGkyZNCA8Pp0OHDtjY2KDT6RBCULt2bebNm5dJ98fJyYmuXbtSu3ZtjEajkoMuLBjsHUmKC8epRj1gC0mBJwvaJIXisaLkoO8tB33o0CGioqKsaSNHjqRBgwYYDAZsbW0z3ceQIUOIiYnB09PT6qROnTqFl5cXJpOJLl26ULVq1UIvB10kHIBdMSdiAdcy1Um208OdO6SGh2Pj6lrQpimKGlOL557W7XtoapZiPuoLG9++Szn39wK9jHLQzZo1o1+/fphMJqSUeHp6EhcXR9++fYmPj6dGjRr4+vpmOj+jHLSPjw83b97E3d0dX19fqxRExmMmk4l+/foRExNDqVKl+P3335k8eTJr164FtIo3qyKoRQ4asIrC5YRlFavRaMxWMXt7e7Nnzx5q166dSQ566tSp3Lp1i40bN+YqB+3h4UHv3r2pUaMGoK07cHFxyXb9xYsXs2DBAiZOnMjevXvR6XQYjUZ69OjBunXrMq0HaNGiBZ999lmhdQBFIgRkZ9D0QmyO/cotNztATQdVFC2UHPS95aCdnZ1Zv349VapUsToYGxubbG8SHD58OG+++SZGo5HFixdTvnx5evbsibu7u7UHY0HJQRcCXIqlcQNIunGOyErFqXI5gaSz53Bq06agTVMUNfLacm86NL038JAoOei8y0H7+fkRFBSEjY0NsbGxODs7W51BVoQQjBgxggMHDjBz5kyWL19OQECAtQcBFHo56CLRA3B2076ApJQ0RK1q2vbZswVpkkLx2LDIQfv7+zN27FgqV67MGfNUaEtM3iIHvXLlShwdHTOdn5McNGCVfs7pmEUOevv27URFRfHnn38CWoWbYF6HY2lZZ5SDtgz+/vbbb5nyWOSglyxZQr9+/XKskCFdDtrJyQlnZ2eaNm2KTqezykFnxSIHbbFj1qxZvPbaawwePJhatWpx+fJlPD09M70A3sLt27etdoLm/Pbu3UtycrL12KpVq+jWrVsu30zBUyR6ADZ2mndPSoESDRoD+9VaAEWRQclB500Oet26dbRq1QpnZ2emTJnCunXrWLRoEfPnz6d79+4sWrTI+irL+Ph4vvnmG0aMGEFAQAADBw5k2bJlBAYGsmjRIlxcXGjevLmSg36UnweVgz61dZ2c2b+r3PRGK3nm9kkZ2LC+PFu7jky5HfpA5SkUeUXJQd+bwiIHnZycLKOiouTFixfl+vXrpZRSJicny5CQEHnkyBH55ZdfyqSkJCmllL///ru8ePGi3L9/v7xw4YK1rD/++EPa2trKI0eOKDnoR82DykGHXwxi44zFeJVZQ+nPTrOjVxuqB8VS4dtvcOnSJR8sVSg0lBz0o6Mwy0FnxDJ2UBAoOegcKFWlCg72NXC3i8BOb0dIVa1Lm3D0WAFbplAo8kphloPOSEFV/g9CkXAAJvTI4hWhz0KQkuT61QFIOKYcgEKhKLoUCQdwNTKB4LDzrA9IAiF4pklzpI2e5KAgTNH3t6BGoVAonhaKhAOoWtoJu5jdXNi4EmNKMvXdniOy6jMgJQnHjxe0eQqFQlEgFAkHIISgbsPKPNuoIjIhGo9SHvxTUYsnJqowkKIIYlnoFRcXl2uerGqXTzMWOeiHIeP8f1By0IWKZ+JseD5xG7YykWKGYoRU1RRC1UCwoihw+PBhPv/8cwDCwsJ48803iY6Opk+fPjmqfJ4/fz7TAqaMqpe7du3if//7HwAdOnTIJN+cUWhOSsnJkyf58ssvadiwIbt27eLNN99k+/btma5VWOSgAebOnUt8fHyO5WYkNDQ00+KwiIgI62pkC0+CHHSRWAgGUMPFH6ekSDBprRr75xohRQiJZ86QlpiIzsGhgC1UKPIPIYRVOG3kyJHEx8fz8ssvo9PpGDRoEL/99hvDhg3j8uXL1pXAtra2dO3albS0NOzs7Fi3bh2pqakYDAYMBgMmkwmDwUDjxo2t18m42GrChAnY2Niwd+9eli1bRqNGjdiwYUM2ATeLHHROvPTSS4Am2rZ06VI+++wzqxz07t27rTODAgIC+Ouvv6hWrVomOej9+/djMpn45ZdfMslB63Ra29ciB/3BBx8AUKdOHby9vfHz82PJkiU0aNCAlJQUWrRowfvvv88nn3xC2bJl8fX1pXnz5hw/fpyvv/6asLAwYmNj8fHxISUlhalTpzJu3DgGDx5M9+7dC+3MoCLjAIJiGuKcZKDi7ZuUcK1JnUpNSKxykGKXQ0kMPIlji+YFbaJCkS/s3r2bmTNnEhMTQ9WqVVmzZg0Ar7zyCr/++itdzGthbGxsmDt3Lg4ODkydOpWffvqJnTt34u/vb9XiX7NmDd9++y0RERHodDrS0tKsukKAtSIF+O677wDo16+fVWsnJwqLHDRAu3btcHFxwc7OjrS0NEwmE35+ftSqVQsbGxv0ej1JSUkEBAQwevRovL292blzJ3379sXPzy/bfRZZOWghxGKgHrBJSvl5DuklgeVAGeCYlPKN/LIF4GoU3IgqTetjx2le/0UauDbgTNVi1L0MCceOKgegeGp5+eWX2bNnD8WLF6dfv350796d2NhYzp49i6enp7V1mpaWxu+//85ff/3F+fPn6dmzJ+Hh4YSHhxMYGMiGDRvo378/bm5u7Ny5k48++ojZs2czZ84c67UsIaCpU6eyZ88ehBCcPn2awYMHY29vz8WLF9mzZw9OTk60bduWL774wnpuQctBL1iwgA0bNuDl5UWzZs2seSxyExbmzJlDREQEvXv3plevXrRp04awsDBeeOEFZsyYkan8wi4HnS8OQAjRG9BLKVsKIZYIIWpKKS9kyfYqsFxKuVwIsUII0VRKef/LfPOIo732JSbExABQo0QNVlRIpS5qIFjx+Bi5YyRRybm/V/Z+KWlXkvnt598z34YNG5BSUrt2bYQQ+Pv7W3sAFpKSknjjjTcYMmQIw4cPp2nTpty8eZNq1arx7rvvWvNdvnyZX375hZiYGE6cOEGxYsVISkrC3t6ekJAQnJ2dmTp1KlOnTgWgbt261rd7vf322/Ts2fOuFfzdyCgHPWTIEGxtbRFCWF/bKM1y0Js2bcLX1zeTuNv7779/13Mvpj8AACAASURBVLJHjBhBvXr1rGMUiYmJOS4eGzZsGJ06dWL69OmMHj2amzdv4u3tzcGDBzEYDJlWHBdVOWhPYJV5ezvQGsjqACKA+kKIEkBF4Fo+2QKA3kaTvEiI0V7PptfpCa9VGrhGwolApNGIMGujKxT5RV4q60fNhg0bqFevHm5ubqxfvx47OzvKli1Lamoqnp6eXL58mc2bNxMdHU1ISAhTpkzBzs4Oi+xKVFSUtVL7/vvv2b17N6+88gqff/45K1euxNvbmx49erBx48Zscgtnz56lRIkSmV6SkhuFQQ4asI4PBAcH06dPn2x2lixZkgkTJjBhwgROnz7N6dOnCQwMtDo/Z2dn1q5di5OTU5GVg3YEbpi3I4GyOeT5C6gMjAXOmfNlQwgxQghxVAhx9M6dOw9skIODFktMiE+wHqtetQmmCmWQCQnqBTGKp5a0tDRef/11ypUrx8KFC5kyZQpeXl60b98ef39/Xn31VfR6PXFxcbRo0YINGzaQmprKDz/8QJMmTejTp4+1Un/77bd5//33rfvz58/HwcGBsLAwunbtytixY63XTU1NZdSoUZnGBXKzDwpeDtpCdHQ0u3fvJigoKJvDADhz5gznz5/n559/5tKlSyxevJhevXrx+uuvW3tQFodSVOWg4wDLtBoncnY0HwMjpZQxQogJwFBgQdZMUsoFluNNmzZ9YOW6VM+REPQJ8Rmm6jYo3YDQmvtxuxFGwtFjOBRm2VaF4gHx9va2tubXrFnDjz/+yKpVq3jzzTfZt2+f9V2/FSpUAMDOzo4xY8bQrFkzPD09eeedd3Is98yZMxw9epRZs2ZRqlQpNm3aZE1LTExk+PDh1KlTJ9P0yJzEJwuLHHSZMmVITk7G19eXcuXK4eHhAWB1Npaxh2rVqjF9+nR27NjBtm3bWLhwIRMnTuTw4cNUqFCBr776ikaNGmFnZ1fo5aDzywEcQwv7HAIaAedzyFMSaCCEOAQ0B3bmky0AtHi2OieB+Kj0jkYD1wb85p6GG5ouUKlhj+YNTApFYSMpKYnY2FguXbqEn58fjo6OxMTE0LRpU/bs2YO/vz8jR47kzTffJDIykmrVqrFx40aOHj3KkCFDuHnzJp9++ikeHh689dZbDB8+nNdee429e/eyceNGrly5wnPPPYfRaGT8+PHUrFmTcuXKWd9DYCE5OTnbgqlff/0101TSjFgcV1BQEDNnzmTr1q0AmZwNwKeffmodEDYajdjZ2VkHlB0cHDAajYwdO5bx48dnOk8IwbfffsvOnTsZNGgQ4eHhzJgxg4CAAD7++GMAvv/+e+usoJSUFPbv38+BAwcYOnQoR44coXv37ty+fZulS5eyZs0avvvuO86dO0dkZGS2+y9s5IsctBDCBfgT2AV0Bl4B+kkpP8qQ53nAFy0MdBDoJaXMfVkiDy4HDXAw6A77p7yGkCbG/rQagzkm+Zpvd9758iL64sWpefAAQldk1sYpHgNPoxx0SEgIVapU4caNG9Zew+OgMMtBx8fHo9fr8zTWkZ8UCjloKWUM2kDwIeAlKWVgxsrfnOdvKaWHlNJJStn+XpX/w1L57BwcbbSuXGxkuPW4Y6WqiLKlMUVHkxwUlJ8mKBRPBVWqVAF4rJU/FG45aEdHxwKv/B+EfGvuSimjpJSrpJS38+sa94Od8V9MlAYgNjzdATQs04joBpUBiD94qEBsUygUioKgyMQ7nnFxRq/TxqUz9gCalWvGmcraY0g4pByAQqEoOhQZBxCfpsdWr83zj41In05ar1Q9/iz3r5bnyBHSCvGiDYXiUaHUQDNjUQONjY3NNU9wcDBRUbkv4gsNDQXSZzopNdBCRJrODntzCDA2Ir0HYKOzwaF8BfT16yITEojdma+TkRSKAkGpgd5bDTQuLg4vLy/8/f3p168fPj4+DBgwwLrKeMmSJQQEBCClZNKkSdkcZOfOndm0aZN1vYFSAy1E6Ax2uNoZKVvXnWrNWmRKe77c89xoe55yp88RvXYtxbt3LyArFYr8QamB5k0NdPPmzURFRaHX65k2bRrLly8nPDycDh060KpVK3Q6HUIIateuzbx58xg1apR1cNnJyYmuXbsSEhKC0WhUaqCFCQeHYnR0XQnPj4DnmmVKa1a+Gatrn2GArS3xBw9hvHkTg5tbAVmqUDxalBpo3tRADx06RFRUlDVt5MiRNGjQAIPBkM1pDRkyhJiYGDw9Pa2zf06dOoWXlxcmk4kuXbpQtWrVoqsGWtiQ5Rvh7/Q/qor6VM6SVqdkHU4mBzO8XTtit2whev16XEeOLBA7FYpHjVIDzZsaqIeHB71796ZGjRqANu3UxcUl2/UXL17MggULmDhxInv37kWn02E0GunRowfr1q3LNB20SKqBFkZEpZZ8Y5fG3IounN6zg9ovtMVgawdownBuTm4YO7WGLVv4d+1aSr3xRjYZWIXiYThXJ38WhNX95946VkoN9N5qoM7Ozqxfvx4bGxurg7FsZ2T48OHo9XqMRiOLFy9mypQpNG7cGHd3d65fv251IFB01UALHXqdwDnBxKZZ35MQHUb5WnUoVSFdpa95ueYcE6k0LO2K8cpVks6cxaG+RwFarFA8GpQaaN7VQP38/AgKCsLGxobY2FicnZ2tziArQghGjBjBgQMHmDlzJsuXLycgICCTAyjsaqBFxgGQEMl/KkYSEV6ZKg090GVZVdjSrSVzT8yldfsORK1YQezWLcoBKB4peWmp5wcWNdBjx44xc+ZMTp06xYwZMzCZTPz666/WmHlGNdDu3bszb948fv75Z+rWrZtJDbRp06bWUM38+fN55ZVXrGqglStX5scffwQeTA00K1nVQGfPns24ceMwGo0YcpBvt6iB6vV6DAYDTZs2JSwszKoGunnz5kz5LWqgQ4YMIS0tjVmzZrF69WpOnDjBmjVruHz5Mq+//jppaWn89ddfmc69ffu2VbUUtHDPsmXL6NGjB3Z2WnRh1apV9OrV6673X5AUHQdw/SgvnP2Qg7bv0Gn0iGzJ1YpX40rMFRw79SdqxQpitm6j9DvvqDCQ4olHqYHmTQ103bp1tGrVCmdnZ6ZMmcK6detYtGgR8+fPp3v37ixatIh27doBmvbPN998w4gRIwgICGDgwIEsW7aMwMBAFi1ahIuLC82bNy+yaqCFDxtbHHTRJCbm3BUVQlDftT6XKtpSzNUV4/XrJF+4gH2tWo/ZUIXi0aPUQO+tBurj40NCQgJhYWF8/PHHuLu7M2nSJG7dukVoaCiNGzfm+eefB7QQ1c6dOwkNDaVfv37WsM/48eMZOHAg+/fvt86+KszkixpofvEwaqBcOYhc0onfYubQ4b2XAckzbu6ZsmwN2Urwv8H0/O060WvXUubddyj12msPb7iiyKLUQB8dhVkNNCOWsYOCoFCogRZKbOwQAqoU24Lv+DfY89PCbFlalm/JoVuHcHqxLQBxe/c9bisVikKPUgO9O4V10VdOFCkHAGCXEAZAbHj210sWtyuOlBJTk/qg15Nw/Dimf/99rGYqFArF46LoOIASlTBig4ONdssxd8JyHJBq4daCv+PP4Nj8eTCZiN29J1sehUKheBooOg7AzpkhZVZTvNck7B2dMCYnZXo9pIUX3V/E/5o/zh06AhCzbevjtlShUCgeC0XHAQAOxZw4G1IOx2fKARB1+2a2PB6lPDgfdR77di+CTkf8gYOkZniBjELxtHO/E0PyIi0NRVNe+mHIOlsqP+Sli5QDWOzTjOIl7SnmUgaAqFs3suURQtC0bFMCjME4vfwSGI1E/vTz4zZVoXjkHD58mE8++STbcUvFbJGFPnjwIGPHjr1rOfcjLQ1FU14aYO7cucTHx+dYbkZCQ0N57733rPsRERGZ1k9A/shLF511AMCXW/+hfWgAtpGXAYi6lb0HANCuUjt2XNnBO6+/TtzOXUStXInryDfQmWVyFYonjX/++YcRI0ZQtWrVbBVLamoqGzduZNq0aWzfvp0bN25gb29P69atuXbtGosXL860UCsv0tKAkpcG6tSpg7e3N35+fixZsoQGDRqQkpJCixYteP/99/nkk08oW7Ysvr6+NG/enOPHj/P1118TFhZGbGwsPj4+pKSkMHXq1HyRly5SDuBqZAL2KdfQJ2stnn9zCAEBNC7bmBl/z8CuxyQcnn2WxBMniN21i+I9ejxOcxWKR8Lp06eZPHkyFStWpEWLzO/COHz4MHPnzgVgypQpTJ48mfbt27N06VLc3d35/PPPsbGxISoqCmdnZ/bt25cnaWlQ8tIA7dq1w8XFBTs7O9LS0jCZTPj5+VGrVi1sbGzQ6/UkJSUREBDA6NGj8fb2ZufOnfTt2xc/P79s9/mo5aWLlAOw0+swPOOIs0HrpubWAzDoDNQrVY9T4aeo1NObxBMniF6/QTkAxRNJ/fr1Wbt2Ld26dbOupLVw4cIFa8z/8uXLfPjhh7Rv357k5GTOnz+PwWDgwoULrF+/noYNG+Lj45MnaWlQ8tILFixgw4YNeHl50axZ+jtIssrLzJkzh4iICHr37k2vXr1o06YNYWFhvPDCC8yYMSNT+Y9aXrpIOYB3Otam9JWLVA7czLHQVvwbeguZlobQZR8KebnSy+y+upsxHX24PW068QcOkHL9Orbu7jmUrFDkjTN/3uDMn5kbHlUautLgxQoc23KFVn2qs/rLY9nO6z6mEaf23qBWs7JcORPB+UO3AfBo44ZHm7wtyKpRowYxMTHW1ifAiRMn0Ov13Lx5k3feeYc33niDjh07snz5cmJjY+nevTvz58/H2dmZ/v37A3mTlgYlLz1ixAjq1atnHaNITEzMcTHasGHD6NSpE9OnT2f06NHcvHkTb29vDh48iMFgyLSC+VHLSxcpB3D2ZgzlE0pwO3YUjrbHiE8xEhsRjkvpMtnytnJrxf8F/h9vN36b4l26EO3nR/iP83CbPq0ALFc8LXi0qZBrhd26vyZV3H9SsxzTn+9WFYASZYvR6OX7lxju27cv3bp149lnn7Uea9y4MRUrVuTcuXMkJCQwe/ZsZs+ezc2bNzGZTGzcuBHQxgkuXLjA1atX8yQt7eHhoeSlzVjGB4KDg+nTp082O0uWLMmECROYMGECp0+f5vTp0wQGBlqdn7OzM2vXrsXJyemRy0sXKQdgSpNM3/8vK0rMIiK2CfEpxYi6dTNHB+Bg44CbkxvB0cFUfOtNojduJNrPj9Jjx2AoV64ArFcoHpx58+axbds2OnToQPfu3enbty/Dhw/njTfeALRW9ZYtW5gwYQLDhw/n9OnTxMXFUaFCBQwGg3UQOCQkJE/S0kCRl5e2EB0dze7duwkKCsrmMEBTVT1//jw///wz7dq1Y/Hixfj5+REXF0fx4sUxGAxWh/Ko5aWL1DTQTvXL8UG/l9gU9T/qON2gZa9+OLuWzjW/ZTaQbeXKOLdrByYTMZs255pfoSisdOvWjTVr1jBz5ky+++47KleuTN26dXFxcUFKSWxsLEOGDCEpKYk6depYz2vWrBmzZs3ivffeIy0tDW9vb2ucf82aNYwfP57Zs2cjpbRKS5cuXZqzZ8/mKC996tSpTAPFGclJXtpS+ScmJvLf//73vuSlc/rkJi/ds2dP2rVrZ8134MABq7x08eLFiY6OxtfXl48++ohp06bRtGlTa8s+63PetGkTYWGa5ExycjK+vr4cOXIEDw/t/SKWl8tYxh6qVavG9OnTcXJyYtu2bQwdOpS6deuSlpZGhQoVWLp0KadOnSIoKOiRy0sXqR4AQEknBy4Vq0DtJt2w79Idij2Ta96XKr7E8O3DGdloJC7duhK7fTvRGzdSaviwx2ixQvFwxMXFMXToUBwdHalXrx5z5syhWrVqbN68mcmTJ3P+/Hm8vLzo3LkzAwcO5Nq1a3z99dd89tlnuLq64ufnx6xZs4iNjaV48eL3lJZ2dHTk0KFDRV5eetCgQYSHhzNjxgwCAgL4+OOPAfj++++ts4JSUlLYv38/Bw4cYOjQoRw5coTu3btz+/Ztli5dypo1a/juu+84d+4ckZGRj1xeuujIQZtZcfgqcXtv0+c/9SjllvtUMgvj94znrWffonqxSlxo3Ya02FiqbdyAXYbXvikUufEkykGbTCaCg4NzDFfkB0peOjvx8fHo9fo8jXVkRMlB3wNHOz0mOx2xkQlcOXmCs3/eXeytU9VObLm8BZ2dHc4dtSlp0VlaCwrF04Rer39slT8oeemccHR0vO/K/0Eocg6gSilHSj1jIP5KMKunfcS2ed9jyrAsPStt3duy7/o+pJQUNy9lj9m46b71UhQKhaKwUeQcQD03F7yqnqfKoQHUrGCgXtt2pKYk55rfwcaB6iWqczbiLMWaNcOmTBmM164Rf+DAY7RaoVAoHj1FzgGcuhHNqgtp3DbWoUftSDqOHItdsbtr/HSp2oUtl7cg9HpKDh4MQMTCRY/DXIVCocg3ipwDKGarJ1RfChd9GERrOiEcXQKnVud6Tiu3Vhy8dZA0mUbJQQPROTmRcOgQiSdPPiarFYrHh5KDfngsctCxsbG55gkODiYqKirX9NDQUCD9+3ii5KCFEIuFEAeFEB/dI9+PQoju+WVHVpztDaQ5lSIq1Q1TQhQR/xzjzur/wR/Dcz3HoDdQ37U+J8JOoHd2puTAgQCEL1jwuMxWKB4aJQf9eOWg4+Li8PLywt/fn379+uHj48OAAQOsMhNLliwhICAAKSWTJk3K5iA7d+7Mpk2bGDduHPAEyUELIXoDeillSyHEEiFETSnlhRzytQHKSSk35IcdOVGhhAOf9G7Mb/59MJjOsObjj6lUrDr9Kp+CtDTIYXEHQOeqndkQvIHGZRvzzJD/EvnTT8Tt3EXimTM4mBd4KBSFFSUHrfG45aA3b95MVFQUer2eadOmsXz5csLDw+nQoQOtWrVCp9MhhKB27drMmzePUaNGWWcXOTk50bVrV0JCQjAajU+UHLQnsMq8vR1oDWRyAEIIA7AQ2CyE8JZS+uWTLZlIMpp4f/VJPPVpONlorZXIFAdo4pNr5Q/wfLnnmXlkJgnGBIq5ulJy8GAifX25/emnVFm5MkdBOYWiMKDkoAtGDvrQoUNERUVZ00aOHEmDBg0wGAzZnNaQIUOIiYnB09PTOv3z1KlTeHl5YTKZ6NKlC1WrVn1i5KAdAcvrtiKBnJbl/Rc4C3wFjBFCVJJSzs6aSQgxAhgBmmd/WGz1OoLD4+jmkIhOOGOjk8Sl2pHoXBOHrJmvHITkGKjVEZ3Q0b5ye7Zf2U7PGj1xHfUWMRs3khR4kug1ayjRt+9D26Z4+vlmQLd7Z8pAmarVeXXGD9nOf+e3jXkuQ8lBF4wctIeHB71796aGedGoXq/HxcUl2/UXL17MggULmDhxInv37kWn02E0GunRowfr1q3LtB7gSZGDjgNrfepEzmMNzwELpJS3hRC/ANOAbA5ASrkAWADaSuCHNUynE0gJTnWbkVC9DaV9P+RWjA1h4bFUTokH2wwzgnw7aX8/CAGHkvSs0ZMP/vyAnjV6ondyoswHH3Dz3XcJm/kNzh06oM/hy1UoCgtKDjo7+SkH7ezszPr167GxsbE6GMt2RoYPH45er8doNLJ48WKmTJlC48aNcXd35/r161YHAk+OHPQxtLDPIaARcD6HPBeBaubtpsCVfLIlG75DmxEfHItNMRvKGKK4RWnC9i6jcpMXoGpbLVNahsGs5FhwKElZx7I4GZy49O8lqpeojkvXLvz7668kHD3Kv3+sodRQn8d1C4onlPtpuT/q85UcdOa0xyEH7efnR1BQEDY2NsTGxuLs7Gx1BlkRQjBixAgOHDjAzJkzWb58OQEBAZkcwKOWg86vwPU64FUhxLdAf+CMEOLzLHkWAy8JIfYBbwGPVuXoLvz69zUqN3CllFsxyrTWWjVhSU6QFJ2eKTkmfTs1faFY75q9+ePCH4D2hT0zbCgAUb+uROYyi0ChKGjmzZvHzJkz6dChA8OHD2fLli24ubllk4OuWbMmM2bM4P3332fMmDGMGjWKt99+m61bt9KoUSPS0tJ4/fXXKVeuHAsXLmTKlCl4eXnRvn17/P39efXVV3OUg05NTeWHH36gSZMm9OnTJ5Mc9Pvvv2/dnz9/Pg4ODlY56IyzkR5EDtrf3x9/f3/rwHRWOeglS5bQr1+/HCtkSJeDdnJywtnZ2aoCapGDzopFDtpiR8YeQ61atbh8+TKenp6ZXgBv4fbt21Y7QQv37N27N5PY3apVqzLNpnpY8sUBSClj0AaCDwEvSSkDpZQfZckTK6XsJ6VsK6VsKaW8kVNZ+cG2M7eJOraPfxbOpmwJ7ceqOYAMlb5lu3hFcE338m3c23Do1iFSTNqULacXX8TGrTzGK1eJ2fhwrTuFIr9QctCPXw560aJFtGrVCmdnZ6ZMmcLUqVOxt7dn/vz51K5dm3/++cfqLOPj4/nmm28IDg4mICCAgQMHUrlyZQIDA1m0aBHLli17suSgpZRRpM8EKlTY2uhwEZcpGTWNtIT+6IQ2EyglNhLrEJClB2CXOa5v0Bl40f1Fdl/bTacqnRB6PaVHjeLW/z4i9IsZOLZpg03Jko/1fhSKu6HkoNN5nHLQPj4+JCQkEBYWxscff4y7uzuTJk3i1q1bhIaG0rhxY55//nlAC1Ht3LmT0NBQ+vXrZw37jB8/noEDB7J//352796t5KAfVg4aYP/FcJ5POczaH2/Q3/U9fr71Mnf+NfJKz4ZUGDhdyxR3B86tB1snaDQg0/nXYq8x9cBUFtd/C24cRzYdzlWfoST8/TfPDBlC2YkfPrSNiqcDJQd9b5Qc9N2xjB3kBSUHnQd0QnA+1hZpvv0yxbW/Ybcj0jM5lYa4UNj3FZxZl+n8is4VcbBx4PzSjrD5XcSF7ZT9UItLRq1YQYp5GbhC8SSi5KDzxuOo/IFHtugrJ4qkA/jtyFXGrbuMrUgkJc2BMlW1yUihYdGZMyZEQMRFiAvLVsagOoNY6WL+Ym6dwL5ePYp7eyONRm68/wEyl0ElRdHjSeplK55cHuR3ViQdQJIxjWuyDHaGOGJLe1K2uSZFFJZSPD3TrUA4s1bbzjgjyEwLtxactbMlWqeDhEgAyk6aiE358iSdPEnUypX5fh+Kwo+9vT0RERHKCSjyFSklERER9/0SmSL3TmCABu7F0esEgVdK4eH5GuVrOtGy7yDKOSZByF9QpTUEbdd6AAAp2VUOdUJHr9g41jg7MjRRcwD64sUpN3ky1996i/C5P1K8Rw/0JUo8vhu7cQycykHxx9uVVuSOZTHPnTt3CtoUxVOOvb097u7u93VOkRwEBohNMvLn2TA6NiqPXq/TBn1nmhdcTLoFe6bBwfQl6VR7CV5ZAbbFIPQsRFwkvkwd/rtnNKu8FqAvWQUAmRzHVZ9hJAScwsnTE/cf5z4enaCbAbDAE0rVgDHH8v96Twrx4WBKARe3grZEoSgQ1CBwDjjbGygudAQdvq2FcGY3SU+8GZA97BO8B3Z+DFLCvJaw6lUcjYk0q/wye2PTdbqF31uUr7ATvbMjcf7+hM+b93hu6OTv2t+Ii5CS8HiuWdgwJsGh+enPIvIyzH0efmwBibnrrisURZUi6wAAZuy9QOX6rmBKISYuiWORbpyhMTxTNfOqYAt/L4C5zdP3I4MZVGcQy84uSz921g9bJxNu7XQgIHzOXOL//vv+jQs9q10raNu980oJQVvS9xMics/7IPx7DdaPhdNrHm25dyMxSpPnziupKbCkA2z9ANa8po3hRAZrzyIpOt0pKBQKK/d0AEKIMhm2+2VJezb7GU8OtnY2rFn9D3+cjSMqxQH/0OoEpjTUwgWWlcCutcB7LniapWLDM8ga/e5DpW8bUDoihKMXN2oVsRkn+/O41osFKQn9bCpy0weZVxrfi22TwGQER9d7573zj1bZOZaGKZFQIoNWiJRwcC5sHJ9Z3+h+CN4Dx3+C3Z9bB7zzhdQUzd5bJ+GbOjCvFYRneY1E+EVY+yb8vTDz8VOrtErfwo4pUP1laGsW7Dq6ROsRXP4z/+wvjERfh2sP0AB5ECIuwe8+6d9ZQuT9OXHFYycvPYBlQohy5rd2jRAaL5vTvs9H2/Idz1qlCQ64Q7xJT1CzSTRoWp+G7c06G5YQkPeP8Nx/wPNDrULJgddCTrHw+GyIzzzQV6puLDbOOpIvXCZi6S/gNypvhoX9o1W6MTeguFkCW0oI2Z+5Z3L7lLZvqfgqtQCdeW7z8Z/hwg4QAg7M1irAf++ityellj/OfA8mI5zfooVVGg2EZ6pD5CUtVBZ1Jf2cqBD49+q97yniEmz5IHMlDZrk9hcV4eua8HkZreI+uhhSk+DOOVg7Mj1v1BVY8CIEroDN78KfGd7SdFrTX6HjF2BfHIL94ZgvtH1XGxi/cw5mPQsr+mv39jgxGeHs+vx1nrnxszcsbg83jt/feVJqjYr74dRqbebcL33gj9fgq2rwacnM9331sPY7i3/EvVTFA3FXByCEqAwko+n71wQsTdx3zH+f6Mnudcu74OhiSzl7W04Uf5EO782gvjvg/6UW9gCwy/DiiUaDoH6fzIUYilHLaMTh3xucjAmGAcuhdF3oOR+dDZR7LgKQ3DnlQtyuPIRzAC7t1v7W76P1AM5tgE9KwNIusLgjJMfBzqkwvzWsHgYlKsNzr0LNjmBKhW3/g/VjYHlf7R/StZZWXtbWNMD2yVoZfqO0/H5vwf4fYE4zWPkKfN9AazkP/BXcnoPESDi2VDt3x2T4oZGW58AcCPgFjDlI1d4KhMUd4PB8rTdi6YmkxMO6kZqzjQ8DJDQdCk2Hac8a4MZRrdUP8Ne3mWdk7foELmjL8+n0pWbf869rPbZancGjF9jYwatrwa0x2DprTtLSMj2zDo4senSt1H+vac897J/Mx+PvaJMKfvbWejn3y5m12uw0k/H+epFpaRCrK/I21AAAIABJREFUvVeWgF/unvfw/8G39TSHDLD1Q5j1HGzN/spD/r2m/f72fa31MCzP77nBUK6B1tA49TvW6mLLB5pDuXYEfumt/c58O9/fs5BS+23/sxmOLM77eYq7kus0UCFEaeB3oDTaN2kCkFJKIYSdEKIaYPdYrMwnitnqqV61BJXt7HCrb67o//oervwFg//QKotf+sC1Q9Blpla5VGwGzuUhaKs24FrPG64e5PXwG8w/PofZ3X6BuuZexKlVOLOb0g313Dnpwq2jxal+fh+6Ewuh04zcp2taXlbvWkurLHd8nJ525xz8X1utNQ5wcSf0mAPe5hlLvl3gyv70/FsnQuwt87nnoVbH9LTrR+HALG27+yw4sRwubNc+ACWrQOP/ajOLdDroOF37xw38FV7+CGp4advxd2D7/8z3vBoG/JLuOG8FwtJu6T2qCzs0dVXbYrDuLa0HUbouDFgGLhW04wC95mm9lxPL4eRv2hvbApaD0MHI/doMrehr2gegdC14bZfWA6rbHep0084HKFsPRuzRKhHLsfhw2PslhJ3V9v+fvfOOj6rKHvj3Tc3MJJn0RgoJCUV6U0ARQUVwLdg7rnX9obu6dld3LbvrrruuHbtiwYZdFJAqRUA6SAuQhPReJ5mZTHn398dNIRBCgDTwfT+f+byZV+67781799x7zrnnjL5VNmQVGS2C/7WJo0j27EffKu/Pd3+UI7ed38E92+Q5wvuANVzmmcjfCD+/ABPajiPfgm1z4Kvbmn8rOhmfKnGMFMqN19MaOh3c+B28NRF2fiv/P3c1BEXLTsTm2fI/NgbA/IY62SKkCu6X1+XvtTMhIlUKZZDP0AcXNz9TP/1bbpv6H7DHw2XvyN5/zBApENa+Cgky3g2BURA1APLWS1XqPyJh2HXy3TJa5L4mmxTcKBDQEIdr9zz44T75bPSbCru+h97j5X/eEah++S7Ej24zK+DJyGGvVghRKoQ4FZnK8eCGvh/wJHD8Kbq6kXGpESQmBuOv8VJU7cZZU026sxeZjlDZ0Ko+2fiDfEBBvjCJY2TjD1Ld0GskAz1e/N5adlcc0PuLlDE5wvvXEhDqwec0UPrQdTLG0KK/Ne9XvBM+vASq82Uvr/hXud4eD3oDXPAc6AzQq8FTqSJD1qORxglrIBu/RiY+CmfcC6c3hK0tOygtw4r/ymX/C2RDn3aevJ6Rv5e96Ls2wPj7ml+KxLHyvI4C2ftOOQvu39tSNZa5DOY1hLoVQvb+6mtkvR4rhbvWy3u56UPY2RBi45LXZaPb2Pg3MqQhBtOGd8EcBOc+CSNvkg36tFfhxrlyxNCI7oCp/a01jAeuWzOzufH/8TH4+Cp4ZSS8NUmqq5wVciS0+SMpGKoPClbrqoT3LwKvU94fR7F8XgDcVdKA//GV8h4YzHDOE3Lbsn/Ca6fLkQfIXnBpeusjJ4CoU1r+FqosP3s1VGa13Kb6paH+5xfl9ZXtlaOiyP7gLIN/RsvzA+z4ShrMP7lKNugAg6+U/0NEmnx2ght8yhc8Ikc1vnrpVeUohIh+smOg+uRIylEk943sB3eshGkzIWmc7Aycepu896FJcOtiOSJrZMtH8l5lrZB2r7l3w78TpUuzzyOvYc50+cyV74M1r8rrzl7V+v06Fhb9TToQNP4nPYWaQnm9v7wpVbGdQJsTwRRFaQxr+Q5SCNgVRdEDvwohblAUZVGn1KoLSTwlDJ9X5YG520g5I4DvVxSQYI0npWSXDATXSHCcbBT2r5TD8UbMwWCQs+9uz8vgzaX389ykl6Unkb0XWEJRvC5ipp/J/pfXUZFuIzjRheXAl3fNK7Kh2DxbNsqqt/mcIBvaBzJk4/zGmVJIXDVbuqt+dSv8+AikTIDogbLx3r9KDsUbe5qZy2WjsO1zuPBl+dJt/USOFIxWuOAF+YJe+1nbPUpFkb21r26HQZc3r7v6E1mXgGBpbB7foCFMnwc5a+T9ufhVMJjA0GDUtkWC3iRtK3GH8SVIPlP29KIGyIZv7J0tDO3HxTmPw9l/k6qvLR/JER2ANULaXsr2yIYhNFl2AjZ9IAVO8pmyIfz0eilQS3bJ30HREJIoe7S7f5CNpM4ol8Fx8ri082Dvj1C8HRY/Bf0vlA3bm2dB7FCY/h1YQmTjnThGCvyYQfBokWycTIEw5ErIWSu3m2xyBLb7B9m4ZiyTZTeSs0Y+J1P/Ax9cJNc1hjUZfKUUfPXVgCI7AJMbUnYYLfLZmfCgHKVt+UiqCRuFbcIY2Yj7PfL8/aZCcGz7732fSfJa89ZLdU5Y7+bOQCM6gxxZfn1H8/sAIBrUh9//WY6Uz3oE9Mb2n/tgHEXN831WPQ+n3S6/e11S4EQNlL9/nQN9zpYxwo4GVQV/PXx2g3w+fvc/+c64quT/JvxwyrTm0U4j2WuaMxKCvBeTHj22a2yDtlRAwcACQAWuB24ELgQWA7s6vCbdRGi0jaoS6TcfldwHkLkBxOaPUAZc1LyjJUz2POZMb1mAOagpjeSw8hzeNLjYnreKQWHJMGaGbLSQ+THD8u6l4sv5FKwJITkqC11jY5axTDYEgy9v+bAHH6AisjTMKL5xbvP30N6QsUQ25oufhOvmyJf36o9a1jGyIb67v14aWNe91TwamPiX5oe6rca/kbRz4c/bW6bONAZA0lj5/ZaFzeszl8vlpMcOfcD7TZENm66NgFyKAtO/PXLP/lhRFDnSGTNDNvjBvaDXCNmgqH6ZC6Iyq7mnveoF2WBkr5Y90MAYeW2GhgHyxL/IMoZfL3XkY2a0nIA2+e+yrOp82fBu/0LabqDZTtJrpDRy601wz3YpWIwWGPfH5nJSz27+Xu+QI8pGgntB/CjQm5tVkSkTYNrr0jB+7lNynTEALn0TNn8oryHqMBFLp/5HjjCr82Sn5ppPpTAzWQErjLmj9eOORMoE+TnjXumq2zgJ84IXIHqQVLWCHO1VZcP1X8rOz4Gs/J/8n859Uv72uqVQOvhZa6S+Vqq2tn8FaefIe2EOhvA0KN8r30F3tXQ2eGO8PGb0rRDYMHJqVAM30vj+Kor8XpoOUc25FCjPkDaPyv3N6065WF73T/9qVrOteBb+sBwsoc3XsaAhonDsUFnH05sT43QkhxUAQogaRVHGIrN7AVQCpcDNwMeKoowB2uH+0bPx+1WKMqu5dEQ8VnsoQWFhOCoqKK23ERUYJXsrZXvlC9Kaf33ccNmLHnotbP2Yuyur+F/BUt4ccsMhjVXkX5+mbute6vfto+hnL3Gl6bDtU/ngBUZL3ee3d8kG7/69ENBKGAnLAev0Bqk+mfCQPP5wBEXDpL/KeoYmy15k3nopvE77v6O/aQc2/m0x9Rk5Ijlc49JW4380+xwPiiJ72TGDDj3vuU/BFweomGqLW+rjr/m4pcutvUFlkjSupSBsJLKfVIGBbLhNgfL89/wK706RQrksXfZ+z3ta/m9Hov8FsuGozJK2hqHXysb9YIZdIz8H0m+K/LSFORBuWyZHkOGpLVWPHYFOJwWcPVHev5G/b/nenPkgnPUXOcKY8LAcne3+vnli39BrpDPB3HukJ5jBDDfNk+9lI64qadda8IhUhQGU7JAj6vH3SUG56nm5fuYYOTps5EC1UKNGoHindFFGyHc0PFUKnvJ98GCmvB5VhZcPykkw7PrmlLMGs7Q5uGvkf/5Mb/m/n/WI7DSOulkKjrMebu5gdAJHDAWhKMo84BogGXhWCHFOw9yApcC1QohtnVa7g+jIUBAHUlXsxB2gw24xsvztl9ixfAkTBhoZ9ViDa6FQZWPr98Hfw5sP1Bnhr6XygS3bJ3XIwb14ePRFXNTnIsbFjYOaAumuGZYCEWnU791L1iUXI3yCuGlx2AMarmfYdVKv/cJg6VZ55/qOM3JpHDt5G6Xa79TbZe/wuYYe3sjfw4Uvdtx5yvZKNYE9XtoLDhZIJzv+BvuJvh3hybLXyHdk8BVSgLirpbfSlgZPp4i+0oNOZ5CfJU81q47iR0PquXLENeXpZoG28X2Y+yfpRjx2hlQBrX4FljWoxcbeBec12E/mTJdG9YMxB0sbR2Q/+c6/foYUMqG9If5U+F0ryVzK9sn9fA02IFsk3LkOrGHtuWvtoq1QEEe820KIxvxtWxRFeU5RlNuEEG8pinITcBrQZQKgs1j83k529rMweUgMiYOGsmP5EnJMQxnV5BHQsDz44VS90sAZYIeihtsQM5i7ht3FwysfZkzMaeiea+j9DrgQrpqNOS2N6Mcep+iJJyj6IR/LZD2muOjmIX5EX/lwl+3RBEBPIH6k/IBUe9y9TdoLhl/fseeJSIM713ZsmScS7Wn4G0ka26xyBCjYIj2M7t4KH10pe9Q//UtuG3qtHDX7vVKwjrq5dTXiiOmQNrnZlmG0yDkkSePk8dEDm/ed3DAhMvUcGHq1nC/hqpKqt8CGebMxg+H+fXKU3dqIrJGIVLh1kezthyZLW4658+L/H8yRjMB3In39jcCXQDRyNPAW0jZwbsP3E5rgCAsxej25FU6mDJL5NvN27cDv86I3HGRgmvgY5Kxu9tWvzpMCoNGIFdqb+KB4BoYPZGHOIpoG2AfMwg256krqflqE46efyV8fS+9Fm1DMDcO80j1y+eWt8FhR51ywxrETmgSn/aG7a6FxII32BIAbvpLvTsFmqUYbfYvUzwvRtounohxqyFYU6H36ofuGJMLvD8j/HRTTepntNRjHDJafbuBITq+/B9Iblh6kMHA3GIj/AzzSmZXrKuyRFgbZbVS7vASFRRAen4jX7SJ/985Dd57wgPSAGHKVbPgbjXyNQ8IGXfztQ27n3V/fpWmqi7950ouiKMQ+8z+ZO6BEJf+BB1Eb85pObLilx2pc09D4LWOPh5vmw0PZsvEH2ZD/xvz728uR7kqlEGI5UNXwewrS9/9r4CEhREZnVq6rCIm2EuBWufa0RJweHykjpAdC5qY2Yqhc8oYc4jVa7q/5VBp5xswAINwSzuTek/kkrKEXENvS1VFvtxP/4gvoAgNxLFxIwf33I/x+adS6a4M02nYzRdVuVu7V4thrnGAoSttqF40m2isWGy3FjTF1TUDvDq9NNxHeKxC3w8vHv+Qwd2vBAQKgDYOzoki/9kb6TZWTXw548G445QbmJgygYvy9MP7eQ4qwDBlC0uwP0QUH41i0mLI33pDlRqR1vvdLK6zeV8bFr6xixkcbqXF7ueezzfzzh12o6omTM0JDo6dS7/M3ZYZTVXHY92pPsYOKOg+Pf7udq99cQ3Z5HfvL6jqlTkeyvKQpivI0Mg6QHlgHpALTgM8URckRQnRRqMHOIyI+kIj4VNhXxpLdJVwxYgBmm43KwnyqiosIiT6Mju8ImPVmbh12JzOL1vPXw7hOBvTvT6/nnyP3llspf/MtQqZNwxjXfclL3rpxFJmldViMeh44rx8DYoM71PW+q9mwv4IAo55BvewIIaj3qZgNOpQT+aI0uo3KOg92ixGd7vDPjxCi6fl6Z1UWP+8r493fj+bOjzYDgon9o7hkeC8ufXU1Rr2OuJAAXr9+JNe/8wsVdV4GxAZx9ehEkiNs3DC2N4lh1k57Xo8kAKYAPuA9wA3sRKqDBgAzgHcb9jnhWfTuDoZcnsKiXQKdXk/iwKHsXbeanO1bCImWl3jgH9tezut9Hl/s+YLtZdsZFNG6a1/g6acTNHUKjvkLyLvrjyS+/x76oK7zBMirdPKvebt55drhKIpCVJAcxYxMCsPrV7lx1nreuXEUW3KrqHX7mNg/6gglHh8en4pRr7R6rzNKa8kqrWNsn3C251fTJyqQiEBpQP92Sz6RQWbG9ZGzjb1+la8257OzoIbpY5MYEh/CvXO2MCIxlCcuGnhI2T0RVRV8sSmPxDArY1LC8fpVVCEwG9o3QhRC4FMFRr2mAz8W/Kqgsa1/ftEeVu0rw+nx8/r1I3n35yxq3T4yyuqY9fvRPDN/N9sLqlEFvHbdCJbvKWVTdiVv3iC9yN6+cRQr9pRi0ClYTQZ++NN4hBAYGv6b9286tek7wKnJHecKeliEEIf9IGcAP9Lw/WZgOnJG8FfAD0BKW8d39GfkyJGiq9i84Hvx7JW/E4vffV0IIcSKPSXi3Od+Ei6P76jLyqjMENf+cK3w+r2H3cdbWir2Tp4sdvbrL3LvukuoqnrMdT9aHvx8q1i2u/iw259flC4ueGmlKKp2iYteXil2FlR3Sj1UVRVzt+aLqS+sEOc9v1x8ti6nxfYyh1uc9/xy8b+F6aK42iU+35ArHv16m1BVVXy0Nltc/cYaUV5bL95Yvk+kF9WIrzflCSGEqKv3ivxKpxBCCL9fFZe/9rPw+Pydcg1tUVLjbvG/bs+vOuzz5PL4xPqscpFZWiuemrtDXPn6arE+q1y8uTxD/O6lFeLRr7cJn1894nPy6rJ94vR/L2m6/sPx0dpsMfWFFeK6t9aK4hrXUV2Xx+cXn63LEdUuT6vb95fVipcW7xG5FXWHLUNVVeH1+cUt760Tz8zf1XRdznqf+Cm9ROwtdhxVnRrLrKitF36/Kirr6g/ZnlNeJ1buKRVVTo9QVVUUVbvEm8szxBWvrRaZpbXirRUZYuoLK8TEZ5eJDfsrRL1XPjNur0+oqio8Pr/YlF3RVPbB/0VhlUt4u+E5OxhggzhMm3rYiWAN0T6fBm4WQjgVRdkB/BNo7JalArOEEF02G7izJoIB7FiZT3CEhUfX7OON60eieFws2prDT/leHpzSD7vFyOy12TjcPv58brN//uacShZsL+KR8w8z27WBlza9RLglnOsGXHfYfTx5eWRNuwS1tpaYJx4n9OqrO+TafH4Vve7QHnVlnQeX189Tc3fy2vUjDju6cXv9ZJc76RcTxN5iB6/+lMHzV0mjthCCGrcPu+U44rEAm3Iq+X5rIY/9bkCL4fW/5u/iulOTcPv8WE168itdnJYiJ+OpquCS11bz9vRRfLIuh1vOSMZmNvBLZjmvLNvHRUPjuGJUwiHnUlWBX3ROr9jt9bNiTymTB8Y0nUunU3hl6V7eX5PNHRP60DvcylsrM9EpCn+78BQe+3o7SeE2Lh4Wx6nJYdz3+VYySmq56fTeXDU68ZA6CyH4YE0204b34r45Wzg1OYwh8SGMSQnn5vfWU+X0MKFvFLeMT+b2DzbwyrUjCDQb+HxjLrkVLox6hatPTeTf83eTXlTDDWN7c9WoBEwGHRv2V9A7wobD7ePHHUVMHRRDQqiVWo+P4IBD/+Mqp4c9xbV8tSmP1RnlzLppNHO3FjAyKZTUqEDqvSr/99EmbhrXm4uHx7FyTxnpxQ4MOoXbxqfwnx/T2V1UgxDw/s2nklvh5P3V+0kKtzI6OYyHvtjGqN5hnBIbTO8IG3O3FuBTVc7uH83YPnJEFBRgxO31s7+8jqfn7ebCIbEM6mXH4fbx2De/IgQ8felg3F4/QkCYzURadCDPL9qL2+tne3417940ms/W5WIzGzh/cAwhVlOL/zTA2PU2uY6irYlg7UoKryiKDpguhHivg+t2VHSmANizvojaino+rqniptN7MzDOTm6Fkztmb2Rcn3DG9glnWEIoOwqqGZ8mPXvyq1yUOep56MttLLjnzDbLd/vc3DD/Bl6Z9ArRtsNP8a/+9lsKHnoYdDp6Pftfgs8//7D7Hsy3W/I5Z0A0NrPU7K3cW0pkkJkP12QTGGDgkakthdSfP9vCDWOTGJEY2lpxh0U06NI9fpWbZq3H4fby0JT+nD2g9etav7+CrLI6dhbUcO9kKTzNBh2qCga9wrML01meXsqbN4wiMbxlRNB1WRX8b2E6wxJDDqk/wMbsCvrFBBNobv9EIr8quOL11fzl/AGMSAxtEjg1bi/rMis455R2hGA4CCEE320t4K2Vmdw1MY2gAAMfr8thb7GDWTedSpmjnn4xQewrqSUhzEq9109UsFS1ef0qK/eWUuX0Mm1YLzLLaom1W5r+x7ZwuL18u6WAgioXD07pj6oKciqclNfVN/2viqJQ4/Yy/9dCIoPMJIbZCDDqyKt0MSYl/JAy3V4/t32wgXMGRONTBdecmsCN767D4xdcf1oil4+M547ZGwk0G7FbjPztQhmxtKTGTUSgmddXZFDl9JIaGciEfpFUOj30jwlGCMFbKzMJsZiICjZzZlok6/ZXEBFoIjXqyCrP/CoX+ZUuDHqFcJsJr19w75wteHwq5w+O5c6Jqewvr2PprhKSwq1MHhiDEAKnx4/NbGBnQQ2frMsho7SWF68eTmTQCR3Nvt20JQC6TH3TEZ/OVAGV5jrEond3iFeX7RPfby0QQghx2/vrxUUvrRDnPPGVcHvlUH31vrKmYz7fkCveWZkpbnjnF1HqcAshpJriye92CL9fFb/mVbU4x8q8leLPy/585Lq8+qrY2a+/2DlwkKhZsqRd9c8ocYhpM1eJnPLmYfbFr6wS/56/S1z0yirhcHvFjvxq4fPLYerS3cXiqjdWH5OqqaDKKS579WdRXlsv1meVC59fFS6Pr+l6PT6/mDF7o/D6/EJVVXHVG6vF3mKH+HJjrpj83HIxa1Wm+Gx9jpj83HLx9spMUVDlFH5/16m8hBDi03VS5fHZupwmldauwmox/Z1fxC3vrRPZZYdXVwghVRMbsyvEFxtyxf1ztojCKpd4ZeleUVQt1ScLdxSJ9KKaJrXByUCV0yOW7pKqwvxKp1i8s6jpeepOuvrZOdHgWFRAPZHOHAH4vSpf/W8Tlz44En1Dj/CiF5cxLfdLKgvyuOvtjzFbrVzw8kqeungQs9dmkxJho09kIOecEt2kTqis8zD874v49s7TuXjmz+x48rwWPblHVj7ChPgJTElutp27vX6W7i7h/MFyJqIQgtLnnqP8rbdRjEYS3ngd27hxh627EIKb3lvPHyelMnNZBmW19UwdFIvXr3Lb+BQKq12kRAYyc9k+lu8ppU+kjetOS8Ji0tMnMvCw5bbFf3/czYb9lXz2Bzkl3+tXueGdX0iNCuT/zkrlgzX7ibNbSAq38uOOYv51acuZjqoqeGnpXm4/MwWr6SjCAHQgqipIL3Zw75ytGPUKn90+lgCjjp2FNcSHWimocpEYZmV/eR3ltR7iQgKwW0xc+9ZaFAWevmQws9dmc9nIeMb1iWh6bjQ0ehLaCKCdfPqPX0RFbb34+9wdQlVV8cePN4mP//qAePmmK0XB3t1CCDkq2JxTKa57a62Y/2uByCytFVmlteLFxXuEEEIs2lEkpr/ziyiscomZy/aKbbktRwHV9dXi0m8vFSV1JU3rrnh9tbh/zpYWvXFVVcVH1/5R7OzXX+waPkL89/kvWhiyVFUVd328SbyydK/IKa8T2/Pledxen6hxecSWnMpWr3F7fpXYX1Z73PfK7fWJXzLLW6wrdbjFP77fIbw+v6ir94o7Ptwg/H5VOOuP3nDelaiqeogxtt4rRzFnPLNEfLclX+wpqhHnPb9c5JTXiX0lDrExu6KbaquhcXTQxgig2xv1o/l0tgAoyakRPq9PTH1hRdM6R3mZ8PuaG4cvN+aKcf9aIib8Z6nIq3Q2NXDTZq4SQggx9YUVwuPzi5nL9opat1cUVEnvi5zyuqbh8s95P4sZi2c0eSncP2eLyK90iq25zY222+sT17+1Wsy/5naxs19/sWXQEOFYsVLM+GijSC+qEV6fX/y8r1S8umyfmLs1v1Pvy28VVW0pvDbsLxe3vLeuG2ukoXH0tCUAOs05WFGUdxRFWaMoymNH2C9aUZTNnVWPo8HvVakodBIYYODbLfnMXLaPwLBwdPpmD4Cz+kVhNuqYf/eZ3PHhRgRgMenx+QWZpbVEB5tJL3LwnwXpWE167vxoExuzK7nv8618sk46TPmdacTaYvlq71eEWI3894qhOD0+XvupObKGXxV8cMsYzpn1MnuHnYnJ6yHvrru4O6KWO2Zv5I0VmYzrE8H/ndWHC4Z038SxkxlFUbCYmv/7kUlhvH3j6G6skYZGx9IpAkBRlEsBvRBiLJCiKEpbWbafRSbM6nYsQSYCbEb+d8VQPlyTzYS+zdH8PG4X7tpassrqODMtki835bG3xNGk931r+iiMeh13TOhDSqSNpy4eiKIoDE8M5el5u7jm1ARmr82Wuu8le7mh3518lv4ZM+YsJLO0lj6RgdJ7o1YGhXviux1szavGYDZx3oevEnLF5Yj6etQH7+bLAS5mnNWnW+6RhobGyUNnjQDOAuY0fF8InNHaToqiTALqgB4R99gabKI4q4bS2npGJoUyqJcdgE3zv+PVW65h0/zvGJkkZ5GW13pQaDb65VdJ/+VTk8OwmgxMH9sbgPFpEWzMrmRC3yhuPj2Z15ZnEGI1sXhHFXbntfzimElciBFFUXjyooF4/XJoti2vmkFxMrWd2agn5oknsF9+GcLtpujeeyn+59NSh6ehoaFxjHSWALAB+Q3fK5B5BFqgKIoJ+CvwcFsFKYpyu6IoGxRF2VBa2rmRKfUGhU0/ZjMiMbTFxC57VAx+n4+szeub1vWLCeSOCc298Lp6P2+vyjpkMtVZ/aJ4/fqRhNlMXDw8jteXZ3Df5L7oFHj6/Kn8acxlvLRFZpYa1TuMzTmV/JJVwdg+4S2mhSt6PbF//zvRjz6KYjJROXs2Bffdj6+8lTSVGhoaGu2gswRALc1qncDDnOdh4FUhRFUr25oQQrwphBglhBgVGdnOBAvHiE6vQ9Ep+Lz+FusTBw3BYDRRlLGXmrISAEYkhjIssTk/77g+4Sy5b0Kr5U4ZJGeFKiiMTAqlf0wwN52eTGSQmRsHTie7JpsVeSvkPgr8uKOIxy88NFaNoiiE3XA98TNfQTGZqJk3j+zrrsdf1eYt1NDQ0GiVzhIAG2lW+wwF9reyzznAnYqi/AQMUxTl7Vb26XLCYqxUFjpbrDOaA0g9Vfq7b100H4Co4IAWNgKDXndEn3qTQcd7N53aYp2iKPz99L+SQbdGAAAgAElEQVTz4qYXKXGWcM6AaGb9vB+Xx3+YUiBw/HhS5n6HuW9fPPv3k3PzLXjz8w+7v4aGhkZrdJYA+Aa4QVGU54ArgR2KovzjwB2EEGcKIc4SQpwFbBFC3NpJdTkqwuMDKc+vPWT98CkXArBtyY943e4OPWdYQBgPjn6QR1c9iqIIsv51fgvvk9YwJSWR8MbrGOPjce/cSdblV1C3Zk2H1ktDQ+PkplMEgBCiBmkIXgtMFEJsFUIc1h20QQj0COL7h2K2HjozNTatH7Fp/XA7atg479sOP+9psacxInoEL25+sd0hp42xsSR/8Tm2M87AX1lJzi23Uv7OO5pxWENDo1102jwAIUSlEGKOEKJHePi0l4j4IMLiDlXlKIrCGVffCMD6777AVevo8HP/Ycgf2F+9nwX7F7T7GH1ICAlvvE74HX8AVaXkv89ScN99qE7nkQ/W0ND4TaNliWiF3WsKW+1FJw4aQtKQ4XhcLn5d8mOHn1en6Hj6jKeZtX0W6RXp7T5O0euJuuce4l95GZ3NRs28+ey/+ho8ubkdXkcNDY2TB00AtMLwyYl43K0bYUeefzEAWxb+gOo/vKH2WAk0BfLv8f/msZ8fo7q++qiODTrnHHrP+QxTcjL1e/aQdfkVOJYt6/A6amhonBxoAqAVMjaVsOvngla39R46gtDYXjjKStmy8IdOOX+yPZkZQ2fw0MqH8Km+ozrW3KcPved8RuCkSajV1eT93wzy77sf4fF0Sl01NDROXDQB0ArRve0UZ9W0uk3R6Tjz+psB+Pmz2Thrjq6X3l4mJk5kRNQInln3zFEbdfVBQcS/8jJRDz6Izmql5ocfpBDwejulrhoaGicmmgBohdAYK5VFhzeipo46jeRhI0kYOASv29Vp9bht8G04fU4+2vXRUR+r6HSE33wTiR9+gC44GMeiReQ/8CCiE9RWGhoaJyaaAGgFRadgCTJSV11/2H0ufuCvTHvgMexRMZ1XD0XhibFPsCJvBfMy5x1TGZaBA0l85210gYE4Fiyg4IEH8VVWdnBNNTQ0TkQ0AXAYevUNpbrk8KMAvaFrslgZ9UZemPgCc/bMYXH24mMqwzJ4MAlvvI4SEEDNvHlknDeF8lnvaXYBDY3fOJoAOAyjzu9NXFrbydKFEOTu/JUfXvovvk5sTK1GKy9Pepn3d7zfFDPoqMsYOZLkz+dgGzcOtaaGkmeeIeOCC3Es1byENDR+q2gC4DD4PH6WfrjriPste+9Ndv+8nJ0rlnZqfYJMQbxy9iu8sfUN1hQcW8gHc1oaCe+8TcIbr2NKScGbk0PejBkUPfUU/tq6Dq6xhoZGT0dLCn+c7Fu/ltLsLIad9zssQcGdfr4KdwUzFs/g/lH3Myqm9TzP7UF4vVTM/oiS554DrxdDVBTRDz9E0NSp7Q5FoaGh0fNpKym8JgDaYMP8/cT3CyUmxd5l52wPpc5S7lxyJw+OfvC4hACAe+dOCp94Eve2bQBYx4wh5q+PYe6jZRzT0DgZaEsAaCqgNggKCyAvved5zERaI5l59kye2/gcP+X+dFxlBZxyCr0//YSYp55Eb7fjXLuWzGmXUPK//6HWaWohDY2TGU0AtEHCgDByd1YccT8hBGu+/IT3778Td92hoaQ7g0hrJK+d8xrv73ifuRlzj6ssRacj9MorSVkwn5ArrwSfj/K33ibjdxdQs3BhB9VYQ0Ojp6EJgDawBptQ/QJ3XdszaBVFIW/nr5TlZrN14bH56x8LdrOdmWfPZF7WPGbvnH3c5RlCQ4l96kl6f/YpAQMH4isqIv9Pd1P01FP4Ojkdp4aGRtejCYAjkHBK+0YBp067EoD1c7/slFDRh8NqtPLSxJfYVrqNVza/0iG5ACxDhtB7zmdEP/ooGI1UfvwJeydOIu+eP+MtKemAWmtoaPQENAFwBIadnUDK8CPnIk4cNJSEgUOor6tjwcznEKraBbWTGPVG/jX+X1TXV/PXn/+Kx3/8cxIUvZ6wG66n98cfEXTuOSAEjgULyLrkUupWr+6AWmtoaHQ3mgA4AiaLgdVf7UOobfesFUXhvDv+RIAtkMxN69m84Pj08keLXqfnL6f9hQHhA7hj8R1UuI88amkPlsGDiX/5ZVKXLMY6dgz+8nJybr6Fgocexltc3CHn0NDQ6B40AdAORp+fjKI7sm+8PSqGyf93NwArP/mAstzszq5aCxRF4boB13HLoFv4w6I/HFVSmSNhjIkh8e23ifjTH1GMRqq//ZaMKVMpffkVfGVlHXYeDQ2NrkMTAO2grrqe7Svy27Vv2uixnDJ+Ij5PPV8/8yTO6qpOrt2hnN7rdJ458xkeX/0432V812HlKno9kTNmkPLD9wRNnoxwuSibOZO9Z02k6O//wLVtm5aPWEPjBEITAO0gKDzgsAliWuOc2+4kNrUfNaUlLHyzYwyzR0uKPYV3z3uXVfmreHLNk9T7Dx/Z9GgxJSYS/9KLJH34AYGTJoHfT+VHH7H/yqvYf8WVOJYs0QSBhsYJgCYA2oEpwIDVbqaquH2J1o3mAC7480OYLFYyNqwlfc3KTq5h61iNVp4Z/wx9Q/tyy4+3kOvo2BzB1tGjSXh1Jslff0XotdegDwvDvX07eXfeRc7NN2s5iTU0ejiaAGgnKcMiydzSfl/44IgoJjRkDlvx0Sy8no7rgR8NiqJwTf9reGj0Q9z30318u+/bDu+dB/TvT8zf/kbqksVE/+UR9CEhONesJfPCiyj6xz+pz8rq0PNpaGh0DJoAaCfJQyPI2np0xs5Bk84lMikZR1kpOb9u6aSatY/BkYOZNWUWG4s3cv/y+4864Xx70FkshE2fTsoP3xP8u98h3G4qZ88mc+r55Nx6G7XLl3epe6yGhkbbaMHgjoKKgjrC4mxHdUxx5j5qykpIO3VcJ9Xq6FmcvZjXtr7Gg6Mf5LTY0zrtPO70dCpnz6b6u7mIejkCsowcSewTj2NOS+u082poaDSjRQPtIMryaqkucdJnRNQxl+HzeDCYTB1Yq2OjuK6Yv63+G8n2ZP44/I/YjEcn2I4GX2Ul1V9+Sfms9/CXl4PBQOSdMwi/7TaULsqspqHxW0WLBtpBBIUHEJsacszHZ/+6hXf+dCv7t27qwFodG9G2aF475zX6hvZl+vzpLM3pvIQ2htBQwm+9lT7zfiDkmqvB56P0xZfYd/Y5lL70Et789rnYamhodCyaADgKzBYD2dvLKcs7toifebu2U1tZwY7lSzq4ZseGTtFxadqlvHnumyzKXsQ9y+6hqK6o086nt9uJffxxEt5+G2NSIr7iYspefY1955xLzi23UrPgRy1PsYZGF6KpgI6S/b+WkbOjgjOv7nvUxwpVZftPixk44Wx0en0n1O74WF2wmhc2vsCFfS7k6v5XY9QZO+1cQlVxrltP1Rdf4Fi4sKnh14eFYZ82jZDLL8ecktxp59fQ+K2g2QA6EFUVzPnnOi5/eBQG4/E14s6aatZ/9yXjrrwOo8ncQTU8Ptw+N7N2zOKn3J+4e/jdjOvV+cZrX2UlNXO/p+rzz6nfu7dpvSEmBtvYsYRNv4GAAQM6vR4aGicjmgDoYNZ+m0F4XCBpo6OPq5y5z/2LPb/8TNKQ4Ux78G8YjJ3X4z5aCmsLeW7jc9T763lg1AMkBCd0+jmFELi3baPy88+pmTcf4WyeeBd8/vlE3v0nTElJnV4PDY2TCU0AdDA1ZS6WfrCLafeOOK5ySvZn8uXTf8NZXUWfUWO48M8Po+9hXjEbijbw/MbnGRk9klsG34Ld3DX5kYXPhycri8rPP6fqk08RXi8YDFiGDsU6YgQhV12FKb5Xl9RFQ+NERhMAnUBtpZvA0IDjLqdkfyZznnqE+ro6+p8+gal33YtO17PsA37Vz9zMuczeOZvJvSdz/YDrsRqtXXZ+b0EBpTNnUv31N9A4kUxRsIwYgXX4MILOPRfL0KFdVh8NjROJbhEAiqK8A5wC/CCE+Ecr2+3Ap4AeqAOuEkK06QLSkwSAs8bDtmW5jLm4z3GXVbg3nc//8Rhet4vU0WOZeuefMVm6roFtLx6/h8/3fM6Xe7/ksrTLuKLvFZj0XTenwVtcTP2ePVR/NxfHggVyVNBA4MSJhFx5BYHjx2tzCzQ0DqDLBYCiKJcCFwkhfq8oyrvAv4QQew/aZwawVwixSFGU14D5Qog2Yxf3JAEghMBb78cU0DGNTd7O7Xzz379T76wjPD6Ri+9/lNDYnqnicHqdzN41m4X7F3LdgOu4IOUCjPqutV/4q6txbt6Mc81aKj/9tGmmsSEyEvsll2CfdjHmlJQurZOGRk+kOwTAS8ACIcQ8RVGuBixCiFlt7P8F8KwQYm1b5fYkAQBQvL+G/dvKOO2ijmloKgry+fbZf1CRn4vZauN3f3qA5OGt/m89gur6aj7Y+QE/5f7EJamXcGnapV2qGmrEV1pK1TffUP3Fl3iym5PwmJKSCJw4kaBzz8EyYgSKcuSkPhoaJxvdIQDeAV4SQmxVFGUyMEII8e/D7DsW+IcQ4uzDbL8duB0gMTFxZHZ212bZagvVrzLn6Q1c+sCIDhsJeFxO5s98jn3r14KiMOqCSxh72dU9UiXUSK2nli/2fMF3md9xbtK5XNv/2i4zFh+IEALXxo1UffkVjqVLUaubA94ZExKwX3wx9mkXY4qP7/K6aWh0F90hAF4EPhFCrG1QB/UXQjzdyn5hwELgMiHEEVv2njYCANiyOAdFURh6dse5SQpVZe3Xn7H6849BCFJGjOaShx7vsPI7i3p/PXMz5jInfQ6jY0Yz/ZTpRNuOz1X2WBE+H67Nm3EsXUbNvHn4DshfbBk6FOuYMQSdPQlzv37ozD1jDoaGRmfQHQJgOhAlhHhWUZQngXQhxMcH7WMC5gP/FkIsak+5PVEAeNw+vvrvJi57aCRGU8d67xTuS2f5h+9w2iVXkTxsJACq398jZxEfiF/1syhnEbN3ziYuMI7rBlzHkIgh3aaCEX4/dWvXUv3NtzgWLUK43c0b9XrM/foSfN4UbOPGEjBokKYq0jip6A4BEAysBJYAU4GrgSuEEI8dsM//AU8DWxtWvSaE+KytcnuiAADYuiQXe6SF3kMiOqV8IURTozT/lf+hqioTb7wNq/3YA9N1BUIItpZu5eNdH1NYV8gV/a5gSu8pXeo5dDD+2jpcGzfgWLYM57r1ePbvb3YtBcynDMB22hiMCfEEnnmmpi7SOOHpLjfQUOBcYIUQokMijPVUAQDg8/hRVdFhtoDWqK0o5527b0eofm6bOQtbSGinnaujKXGWMCd9DktzlzIxYSJX9r2y29RDB6K63dT9/DO1y1fgWLgQf1VVi+2G6GisI0cQOHESgRPPQh8Y2E011dA4NrSJYF3Avo0lWINNxKV1bq+8uqSYnO1bGTxpMgCq6ueXr+cweOJkAsPCO/XcHYHH7+HH/T/yxZ4vCDYHc0nqJYyPH9+pgefai+pyUbd2LfXp6bh3p1O3ejVqTU3TdsVoxDJqJIFnjMc2/gzMaWmaukijx6MJgC6ipsyF0azHEtR1Ko7tPy3mx9deQNHpSB4+isETJ5M8fFSPCynRGnsr9/LNvm9YU7iGM+LOYFrqNFJCeo7vvlBVPJmZ1K1eg2PhQpwbN8IB74shOhrbGadjGzsO25jTMER0jgpQQ+N40ARAF7FvYwl5uys467r+XXbOstxs1nz+Mfs2rEX1+wGw2kMYOOFsBk08l7C4nq/D9vq9LM9bztf7vqbWU8vU5Kmcm3Qu4ZaeNaLxVVbiXLOG2pWrqF21En9pyxzR+rAwTMnJmJJ7Y05Olt+TkjAlJ6PotNQbGt2DJgC6CCEEc1/eyqipvTtdFXQwdVWV7Fy5jO1LF1JRkNe0PnHQEMZfexMxfU6MHLwlzhIW7l/IwuyFBOgDmJo8lUmJk7plXkFbCCGoT0+nbtUq6tb+gnPTphbRSw9EHxaGKTGRgIEDsY0dg3X0aPT2nnU9GicvmgDoQmrKXCx4czuX3j8CQwe7hbYHIQQFe3azfdlC0teswut2AZB26jiGnDOFpMHDTpjeaJ4jjx/3/8iSnCWEB4QzJXkKExMmdsts4yMhVBVfcTGerCzqs7LwZO2X3zMy8BUd5AOh0xFwyilSGIwZg3XkSHQBxx9YUEOjNTQB0MX8+lMetZX1jL3k+APFHQ/u2lp++WYOmxfMxd8QOO1EmVR2MJnVmfyY9SPLcpcRY4vhrISzODP+TCIsPVvvLoTAm5eHNz8f54aN1K1dg2vrNjggkJ1iNGIZPhzr6NFYRgzHMnQY+kBbN9Za42RCEwBdjFAFddX12ELMPcJLpLainO3LFvHrskWM/N00Rky9EICCPbvJ3raZAWecRUhMbDfXsv1kVWexPHc5K/JX4FN9nNHrDCbET6BvaN8ecb+PhOp04ty4kbq1a3GuWYt7164WxmV0Osx9+2IdMZyAgQMxpaRgTknR1EYax4QmALoBn9fPyk/3MPGGnpPKUKgqqupHb5Aul6s//4g1X3zC8KkXMun3fwDA43ahoGA8QVQSVe4qVuavZHnecrKqsxgRNYKzEs5idMzobp1wdjT4Kitxrl+Pa+MmnJs34965E3y+Q/bTR0ZgTk3F3CeVgP79CBg0CHNqqhb+WqNNNAHQTQhVUFFYR1icrUf2TPPTd7Ft0TwGTZpMwimDAdi6aB5LZ71JXL/+JA0aRtKQ4UT3Se1xSWpaw+v3srFkI8tzl7OxeCNhAWGMjRvLmNgxJ8zoAOR8BPf27Tg3b6F+zx48mZnUZ2UhXK5D9lXMZgIGDCBg0CAsgwcRMHgwpt69Txg7j0bnowmAbmTFJ+nYo60MndT5OXU7ghUfzWL93K9aqCTMNhvxAwYTm9qXuL796TVg4AkhEAprC1lbuJY1BWvYV72PvqF9GRs7lrFxY4myRnV39Y4Koap4Cwqp37cXz759uHfuwrV9O96cnEP21QUFETBwYMNoIQVTcgqm5GQMUZEnjBDU6Dg0AdCN+L0qc1/ewpCJCaQMj+zu6rQLV62D3B3byN62mZxft1JVXNhiuyXYTlzf/sT06UtMnzQSBg5uUiv1VFShkl6RzprCNawtWEtVfRWDIgYxKnoUI6NH9oiwFMeCv6oK144duLfvwL39V1zbfm0R+fRAdDZbwzyFZMwpDfMUevfGGBODzm7XhMNJiiYAupl6p5e5L2/ltItTSOgf1t3VOWqqS4rI372Tooy97N+6kcrCgqZtOr2eu96bg9EkQyqv/fJTdAYDAyec3aNjFXn8HnaU72Bj8UY2FG2gzFXGgPABjIweyajoUfQK7HXCNojeoiLcu3fjycigPiMTT1YWnsxM/AfkRzgYxWLBFN8LY0IipoQEjIkJmOLj0QUHY0pKQm+3o/TwKLQaraMJgB6As8bDys/2MPmWgSi6E7NhAenWWFVcSNG+PRTt20O908mUGfc0bZ95yzW4ax3cNvNdgiOkmmXjD9/grqsjLK4XYXHxhMb1whRg6a5LaBWf6mN3xW4pEIo3UFBbQGJQIoMjBzMkYginhJ/SI+cfHA2+ysomYVCfmSW/5+TgKy5Gra1t+2CdDlNSEubUVIy9emGMjcHcrx+mhAQMUVEoxp49AvwtowmAHkT+nkqMZj1RScHdXZUOR6gq25b8iKO8lDOunt60/r37ZlCe11JXHRgeQVhc/AFCIZ6wuHiCwiN6RM9bCEGOI4dtpdvYVrqNnRU7UVWV/uH9GRIxhMERg0m2J6M/AWwh7cHvcODJycGbm4snJxdvbg7egkL8lZV4cnNRHY7DH6woGCIiMMTEYIyJaVhGY4yNxRgXhyEuDkNEhGaY7iY0AdCDcFS40Rt06HQKAYG/jV7Trp+XU56bTUV+HhUFeVQVFeBvxc0RwGgOIDIpmauf+k+TIMjavAGT1UZMn7RuDXLn9rnZXbGbbaXb2F62nf01+zHrzfQP68+A8AEMCBtAakgqRv3J97+q9fVy5JCRia+oEE9eHvW70/EWFuIrLW2RU6E1FKMRQ4NAaBQMxrjGZRyG2Fh0phPDbfdEQxMAPQyhCr59YTOnjI+j7+iY7q5Ol6P6/VSXFlNZkE9Ffi4VhflNwsFVU01EYm9u/O8rgOyJv3Tj5fjq67lr1hzMVqmGWfTmK1SXFhMYGk5gWBi20DACQxqWYWHYQkK7xDBd560jvSKdXRW72Fm+k31V+9ArevqG9qV/WH/SQtNIDUntcbGMOhLh9eIrK8NbWISvuAhvYRHeokJ8hYV48wvwFhQckmehNfSRERhj45qEgjE2FmOvOAzR0RgiIzGEhWlzHo4BTQD0QDxuH4tn7SQ4wsLYS/qgN2jDY5AeSK6aGsLiegHg93n5/oVncDkcXPXEv5tGBa2plQ4mIDCIgMBAAgKDsAQFc8lDjzcdn75mJX6fj5QRowmwySQvHrcLvcFw3ILD7XOzr2pfk0DYV7WPmvoaIiwRpIakkhqaSlpIGsn25BPertBeVKcTb2Eh3oJCvAUFeAulYPAWFOArKMRbXAwN0WwPi6KgDw/HGBODsVcv9MFB6IKC0YeEYIiKxBgVJYVFdDQ6W8+ce9MdaAKghyKEYOuSXDK3lHLuzQMJCjsxZt/2BEpz9uMoL6WuspLaynLqKiuoraygtqKCuspy6qqqEOKAVI9WG3fNas44+s7dt1FVVMhNz7/eFDJ73svPsmvVTxgDLFiCggiwBREQFESALRCTxYrZasFksR7wsZAyYnSTQdvlqGk618F5m4UQlLvL2Vu5t0koZFRl4Pa5iQuMI9meTO/g3k3LkICene6zoxE+H77S0gah0FJI+IpL8JWV4a+oaBkyow0UiwVDeDj68DAM4REYwsPQh4bJZZj8GMLC0IeFYwgNQTmJ1U9tCQBtPNWNKIrCsHMSie0Tgt6go7KojpBoq9ZzaQeRib2JTOx92O2q6sddW4u71oG71oG3vr7F9rTTTsdRVoo1uLmhVf1+FJ0Or9uF1+2iprTkiPW4bea7TQJg4Rsvs2/9Gi689xH6nnY6ANsWL2Dbkh8xBQRgDAjAGGAhOiCA+IB4JlvSMAZYcDrrqap1UJa7h53e1ew3l1GJA6vRSpIlnqTARHqH9yEltA8JQQknpY1BMRikyic2Fka2vo/wevFVVODNz8dXVITfUYvqqMFXUYmvpER+iovxlpQgXC4ZhC8vr/XCDkIXFIQ+LBRDaKOAOOB7aAj6kBD0djt6ewj6EDv64OCTQh114l/BSUB0svQI2rW6gGHnJuJxebEEnrw9kq5Ap9NjDbZjDW5d937mtb8/ZN0F9zyEEAKPy4nL4WgSHu5aBx63C4/TSb3LhcflxNOwbFQfARhMJsw2G2ZLcyTP6pIiijP3trveAcAjDz9OyvDR1HnrWPTRG2TM/54d41P5cbCRXEcugfkeUtf50RuNGE1mzCYLAWYrFrMNk8mM3mCUqiyjUX4MBvqMGkPvIcMBqCjIJ3PTOsJ6xZMyfDQA3no3+7duQqfXo9Mb0On16PUGFL0evV6PzmBo2qY3yKUxIKDp+oUQCKF26gxxxWjEGB2NMbrtSXtCCNS6Ovzl5fjKK/CVl8nvFRX4KyrxV5Tjq6iU6yor8VdWojocqA4H3uy21YoHorPZ0Nvt6OxSIOiDg9HZg9EHN/y2B6MLlr91Nhs6qwV9UBD60FAUi6VHdPQ0AdCDGDmlN/UuH9+/vJVe/UIZcV4SAbaTr7fXk1EUBbPVhtlqg+ijM9D/7k8PHLJu+NSLSB09Fo/bhbe+vmF04ZZCpHF5gECpd7maRiU2o40oWzQ5ARbG9Z7AqAmXALBr1U/MW/os4MePGyfVtJ6Kphm/zUjcwIGY9CZKszNZ/uE79D3t9CYBUFdVxXf/e/qorjfttHFcdO9fAJmr+p0/3Yo9OoZbX3q7aZ9377kdr9vdUoAcRqDo9HoCw8I597a7mo5f8u7r+H1eJk6/rSlA4bYlP1JTWoyi06PT6dDp9SgNy8bviqJDURT53aAw4LLLMDTMVcjZvhVXTTUJpwzGFhKKUFVKd++iIisTUVeLWluLqK1D1Nbir3UgahwIZx1qXR3CUYvasM3qcmKsq4OCAuoNerx6HSafH5Nfqh59OgWvXg9ItZXSoL1SAMVkkiOK4GB0NhsGWyC6QBvGoCBMwcHoAoPAakWxWTEEB2EIDiFg4MAODxOuCYAehtli4LKHRpG+tohvnt9M2qgohkxKwNgNyWU0jp/A0DACQ4999ve4K65j3BXXtViXOnoMt778Nj6PB5/Xi9/rxe/z4vf58Hu9uOrrKK8tpay2lIq6Mirrylmi28R7C5biVb3YK/UkDAlhd0gplTs+IDYwllCvlYThwzGgR/X7Gz6+5u8+H/6D1lmCmueyqH4/iqJDd5Cvf21FBd56d7uv9+Cw5DtXLMHjcjHh+lua1u1e9RO5O389mttI39NObxIAa7/8lNydv3LFX/+JLSQURadj58a1bPz+6yMXFGSAIDtg57J7HyUuLh5/dQ0///AVWzf9wuhBIzglJgG1poaM3P2sLsw6QoF+8NdATQ3UQP+CclJKpcdUQUggW5Kiia10MDynhORvvkbfv2PTzWoCoAei0ykMGBdL2ugoti/PJ31tEakjo9AbdZog0MBoDsAedezuwx6/h+K6YgrrCilyFpFZlSm/jyylwl2BQBBkCiLSEkmkJZZIa6T83rCMskYd4r0UFteLez/9DnHQfIBbX34bv9+H6pPCw+/zHSpQGrf5/U2NdCOTbroDv9eL4QAj7eBJk0kcPAzV75Mhzv1+VFVFqH5Uv/wthCrVUqpUTR3o2ZUwcAgWewhWe7P9J7xXAikjRjeETJfHIlSEKpp+C6FC02+VgIgITAkJkADBGbsILcon9IwziJg4GYCa9WsJnPW6NFwLgYCm+yNUtenTeB4hBPbzJhMZFY/qcFBdkI0+PxNTdDTWqET0IR3vGKB5Ab8YdYQAABDRSURBVJ0g5O6uQPULQqKsWIKMmAI02a3ROQghcHgdlDpLKXWVtrp0+VwIBIHGwBaCIcIS0bQMt4QTZAzqEbru3zKaF9BJQGMQucwtpaz7Pou4tBD6j4khMlF7wTQ6FkVRCDYFE2wKpk/I4dOaCiGo9da2EA4lzhJ2lO+g1ClHEw5PcwgJu9lOWEAYYQFhhAaEtlg2ftcERteiCYATjJRhkfQeHE7urkq2LM6lqtjJxBv6ExZnQ6/XJpNpdB2KohBkCiLIFESKPaXNfVWhUlNfQ4W7ggp3BZX1lVS4KthTuYdKd6Vc565sEhiKomA32QkJCCHYFIzdbMdusmM325t/m5t/nyjZ33oamgA4AdHpdSQNCidpUDgelw9Fr7B9eT6xfez4fQK/109Mih2DZi/Q6CHoFB0hASGEBISQQtvCAqTAqK6vpqq+iur6amo8NU3L/Nr8pt/V9dVUe6rx+r1Nx9qMthbCoXEZaAwk0BTYtAwyBhFoCsRmtKFTfpudJ00AnOCYLPIvbMw4VpRZTdbWMlZ/lYHJoie+XyipI6MJif5thBzQODnQKTpCA0IJDTi6nBJCCJw+ZwvhUFNfQ7WnmmJnMRnVGdR6aqn11uLwOKjz1lHnrUM9YNa4SW9qISACjQcIDVMQNqONIKNcWowWrAYrVqMVq8GKQXdiNaknVm01jkhMip2YFDn5qa66noI9VdS7fGRvL6fe5SUmxU5FQR3RycHaZDONkw5FUbAZbdiMNuIC4476eCEEHtWDw+M4RFA4PA6q66vJd+Tj8Dpwep04fU5cXhdOnxOn14lfNMczEghMOtMhQsJqsGIz2rAarVgMlub1B2xv3GYxWDDrzZ1mF9EEwEmMzW4mbXTzrElVFdSUuSjYW8WWRTm4nT5sdhNJg8IZfFY8Zbm1RCYGdWONNTS6F0VRMOvNmC1mIiwRx12e1+9tEg6tLn1Oyl3l5PpyWwiSxqXL56LeX8+U5CncPOjmDrjClmgC4DeETqcQEmVl3KWpQMNwucZDvdOH6hcUZlQRkRDIl//ZiN6gIzDMTFBoAEHhAaSNjsbvVTFZDFrkUg2NdmLUG7Hr7T02HLgmAH7DKIqCzW7GZpf5fIdMlHaEyx8ahcflw1HppraiHkeFnMm5d0MJvQeHk7mllL3ri7HazQSFBRAYaiY2NYTwXjZqK+oJibbgcnj5//bOPTiu6r7jn++udvWWLEvyCz+wYxvwkzFgMCTBDraTFJKQhEkztA2tgZAU8kdoO9CETGIGp+lMy7QlCQmBUPoIE17pA5caQuyYEB7GbggYDJiHwTbyW5YlW7K0++sf50iWxMrYRjvSen+fmSvtPfe39/5+e+45v3vOued3yipTJFPuLBxnuOIOwMlJuryE+vIq6scdCXY2Z1EIm3zm4onMWTSetv2Had3bTmtzB4mEOHwow9532yivSbH63zfR3tpJpisMriUS4rIbz2bDqi3MXjietzfu5cDedsoqS0iXlZAqTVI3tpKyyhRdhzOUVqbIdmVJphL+Xrjj5Im8OQBJdwEzgJVmdsuJyjjDk0QyQfXIsvesYTD1rLAQ/CXXzu2TbllDEtPnj6EknaSmoYxMV5b2tk7amg/T2ZEhkRSHq9Ps2dbKqFNr+NU9L9PVGabhSyJdluTS6+ex+t82sfDy01i38k32bG8jWZIgWSKSqSTT54+mrCLFoQOHqR1Vzub1O+PxBMlUgtKKEk6d3UDTG/sZM6WW3VsP0NmRJZEQiWTYqupKUUKYQbIkOLbu44oyPufCORnIiwOQ9DkgaWYLJP1U0jQze+14ZZyTByXCU3y3wxg1qYZRk2pyytafElodn/ur3IHhP/KFaSghZi8aT2d7hkxXNmydRtXI0J2VKBGJZILy6nQ8luVwexed7WEt4p1bDjBmSi3bXm1m/85DZLNGNpPFMsaMD4+LYaEzVNSmeea/3owxZ4xs1qgaUcrSq2bx2E83smTZTB69ayPNO/rG4zz/81PpaOsEhdbUUw+93ud43ZgKliybyS/vfonFfzaDR+98kdZ9HSBiFEtY8NmptO5tp7QiFNPfPf5OOBZlRo6r5NxPT+GpX7zOgs9+iCd+/iodB7uQgESQm7d0Es07D1I5opTOjgybn9uJEvScp25sJWecP5YXf72N2QvHs/5/36KrMzhECVCIS7V/50Gq6spob+tk+2vNPTqCqB1VzvjT69jywh6mnNnIS7/ZTjZrdDfcJPGheY3s23GQmvpyDrZ0sPud1mBrEKCmoZzGiVXseKOFcdNHsHn9kbUYuluAk2bX09x0kJqGMtqaD9O882CPjgKq68uoaSynuekg9adUsnXTvngCULzYuGkj2L/zENX1ZbTt76CtuSPqGa5ROaKUito0bfs6qG4oY9eWA32+DzBqYjUtew5RVVfGwZbDtLd19pxDgvLqNOmyJB2HuiirStGy61AfOxCMGFVB2/4OyqvTdLR10tmR6cl7CEEhkyUJurqypNIJDPLy0JGvFsBC4L74+VHgw0D/yv1YZBznPXRPcCuvSlNedXTZ087NHTStuzure/7E0fjU1+bmTF+ybCYAS6+c+b7nmPCN3BFBP3bFGQBcdMWMGHCMnv8l6QT14ypDxWOwaGwllu0+bj2D8bMuDMtnzl40PnS5dZ8jCxW1aUrSSUrSCTJdWaadMzoGOgvHSytDFdD99teoiTVkurJ9dClJJUiXh/GcknSS8up0r0BrkEiGSiuROFLBQVy8y4xsPFe2KwQ9y3QaHQe7okyIRVZWmcIMDrWGCV0H9rT3OW4GEzMjaWvuCBV0Swe7t7b2XMjCT0TliFL27Whj5NhKtr3WHCMxW89CYt2tvrKqFHu3t7E9ylj4wynT6yhJ19D05n4qatO88nRTPEXUA2gYP523N+5l2jmj2bppH9s3N8eAb+H45DkNNEyoZtur+5g8p4F1K9/q0TFGhubjV8/ipd9sZ+5FE3jlmSbe3by/j62nnTuGujEV7HizhfFn1IFBTUP5+95nx0tegsHFrp1/MrPnJS0F5pnZ945XJsp9GfgywMSJE8/asmXLoOvrOI5zsnK0YHD56shsBbrdVdUA1zkWGczsDjM728zObmxsHHRFHcdxipV8OYD1hC4dgLnAWyco4ziO4+SJfI0B/AfwhKRxwCeBL0q6xcxuOorMeXnSxXEcx8lBXloAZtZCGOR9GlhkZs/3q/xzyezPhy6O4zhObvI2D8DM9nHkLZ8TlnEcx3Hyg89mcRzHKVLcATiO4xQp7gAcx3GKlLxMBMsXknYBJzoTrAHYPYjqDCVuy/DjZLED3JbhyonaMsnMck6iKigH8EGQ9NxAs+EKDbdl+HGy2AFuy3AlH7Z4F5DjOE6R4g7AcRynSCkmB3DHUCswiLgtw4+TxQ5wW4Yrg25L0YwBOI7jOH0pphaA4ziO0wt3AI7jOMMISSMlLZHUkO9rFYUDkHSXpKck3fT+0sMLSSWS3pa0Jm6zJS2XtE7SD4Zav2NF0mhJT8TPKUn/LelJScsGShuu9LPlFElbe+VPY0wf1vecpFpJj0h6VNIvJKVz6Tzc7YABbelTZqLcsC83kuqAh4H5wGpJjfnMl5PeAfReexiYImnaUOt0nMwB7jWzhWa2EEgT1lGYD+yUtHgolTsW4k19D1AZk74GrDezC4DLJFUPkDbsyGHLucCK7vwxs10Fcs/9EXCrmS0FmoAv0k/nArED3mvLjfQqM2b2gqSzKIxyMwe43sxWAKuAj5HHfDnpHQC51x4uJM4DLpH0bFxG8yLgQQuj96uAjwypdsdGBvhDoCXuL+RInqwFzh4gbTjS35bzgKskbZD03Zi2kGF+z5nZD83ssbjbCPwx79V5YY60YUcOW7roVWYklQAXUgDlxsx+bWZPS/oowVl9nDzmSzE4gEpgW/y8Fxg9hLqcCOuAxWY2H0gRltEsKHvMrKXfeg+58qQg8imHLY8QCuQ5wAJJcygQWwAkLQDqgHco0Dzpppctj9G3zPwBBWSLJBEeMvYRlpHPW74UgwM4prWHhzG/N7N34+fnKHx7ILcNhWrXb83sgJllgP8DplEgtkgaCdwGLKPA86SfLf3LTMHkCYAFrgV+D5xPHvNl2P4Ig0ihrz38r5LmSkoClxK8fyHbA7nzpFDzaZWksZIqgKXAixSALZLSwP3AX5vZFgo4T3LY0r/MPE/h2HKDpC/F3RHA98hnvpjZSb0BNYQb4FbgZaB2qHU6Tv1nEZ4EXgBWEJz2k8A/Aq8Ak4dax+OwZU38PwnYGG1YByRzpQ21vsdoyyJgU8yj6wrlngO+SuhiWBO3K/rrXAh2DGDLt3uXmShTEOWGI11Ya4EfxnzIW74UxUzg+ObGEmCtmTUNtT4fFEnlwMXABjN7Y6j1OREkjSM8xayy2KeeK61QKcR7LpfOhWjHQBRquclnvhSFA3Acx3HeSzGMATiO4zg5cAfgOI5TpLgDcIqGOCGo934yvnM9GOdOHoPMCEmpwbie4wwG7gCcYuLHklZKelzST4CvAA9LeljSVgBJUyX9TFIibg/H9JXdaXH/AUk74nd3Ad+RdIWkMZJ+2d/ZRH4E/E0uxSTdLGmRpBWSbpRULWnVsTgWxzlR3AE4RYOZXWlmFwNXAp1m9gMzu9jMLgF+G8XagcPAdGA1MF/SGkLIh9XAgniuy4Bn43efN7NvEWYDlwHtZtbV+9qSPh8/ni7pwn7HqgihJRYAowgTlyYBbWaW6e14HGcwyfWU4jgnJZLuJ8SKAVgp6evAnxLeIc9IOh34AqHyPw24F2gAtsb9FjN7MgYSuxyYK+lO4IzYougY4LqfAb4OXEt46PqxpNvN7O4oUgvUA9cBvyM4o+uAqZLWAlMJE5qeHazfwnHAHYBTXJRaiKgKgKRvAH9uZk/2SmsCDgAvESr53nFWRhC6cJ4CdhOe0m8kOIybgJuB0l7nmgAsByYCnwH+JJ77E8A9kr4K3ECYzHMq8PcERzOGEBXym8Bm4Boz88rfGXTcATjFRFPszikjzBR9BlgRx4FnAxMIlX4X8LeEyJ//0Ov7V/f6fANwp5ntlpQysx3ANZLOAcZFmTSwAbg6duW0Axkz2wt8StIlwBZCOVxOcBC3Ap3Ad4GzCN1RBTNpySks3AE4xcSvgMcJFf9fAv8DnG9mV0r6T+Aq4AmCI/gmIdBWHfB3Uf5b8Tx1wDozuzfu/0zSZWb2AGGa/ncAzOx14PsDKWNm3QPMFwC3EPr+5wJnApOBh6LoIx/UcMfJhTsAp5j4OaHL5tPArrhtj/33pxMiSVYTKvAxhFgsELpl/pnQgrjNzB5UWAVsLeEJvREolfQVQpm6/3iUiuMK9xEGmh8BNppZp6QNhL7/m0/cZMcZGH+zwCkKFJZqXEOID387oZvlDkIF/m1CfJg9hO4fzGw9IdDbC4SYK5uAa83swXj8PjP7qJktjt//vpkttrAC1UBLDoqBy9yPCK2Tm4BZkiYDMwkDy/M+iO2OMxDeAnCKAgtLNS4lDLYuBx43s58ASLqe0HUDwUGk4mubXwKWm9kGSdcA90r6F8IiHH9BcCIAIwktgEvjfhJ4yMxu66dGirDARx9iYK/bCX395wEzgLsJ3U47gAckXR67lBxn0PBgcE5RobDW8PT4hN+ddgHwchyc7U4r6f8u/9HSB0GvnvPG2ckJC4vMIEnmBdXJA+4AHMdxihQfA3AcxylS3AE4juMUKe4AHMdxihR3AI7jOEWKOwDHcZwi5f8B3WKHhjckCpsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "N=1000\n",
    "X,Y=make_regression(n_samples=N,n_features=10,random_state=123)\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X,Y,train_size=0.70, random_state=123)\n",
    "\n",
    "B=300\n",
    "dt_stump = tree.DecisionTreeRegressor(max_depth=1, min_samples_leaf=1)\n",
    "TrainErrAdaB=np.zeros((B,))\n",
    "TestErrAdaB=np.zeros((B,))\n",
    "adaBoost = ensemble.AdaBoostRegressor(base_estimator=dt_stump,n_estimators=B,loss= 'square',random_state=123)\n",
    "adaBoost.fit(X_train,Y_train)\n",
    "for b,Y_pred in enumerate(adaBoost.staged_predict(X_train)):\n",
    "    TrainErrAdaB[b]=1-r2_score(Y_train,Y_pred) \n",
    "for b,Y_pred in enumerate(adaBoost.staged_predict(X_test)):\n",
    "    TestErrAdaB[b]=1-r2_score(Y_test,Y_pred) \n",
    "\n",
    "GBRT=ensemble.GradientBoostingRegressor(loss='ls',n_estimators=B,max_depth=1,min_samples_leaf=1,random_state=123)\n",
    "GBRT.fit(X_train,Y_train)\n",
    "TrainErrGBRT=np.zeros((B,))\n",
    "TestErrGBRT=np.zeros((B,))\n",
    "for b,Y_pred in enumerate(GBRT.staged_predict(X_train)):\n",
    "    TrainErrGBRT[b]=1-r2_score(Y_train,Y_pred)\n",
    "for b,Y_pred in enumerate(GBRT.staged_predict(X_test)):\n",
    "    TestErrGBRT[b]=1-r2_score(Y_test,Y_pred) \n",
    "\n",
    "GBRT0=ensemble.GradientBoostingRegressor(loss='ls',n_estimators=B,max_depth=3,min_samples_leaf=1,random_state=123)\n",
    "GBRT0.fit(X_train,Y_train)\n",
    "TrainErrGBRT0=np.zeros((B,))\n",
    "TestErrGBRT0=np.zeros((B,))\n",
    "for b,Y_pred in enumerate(GBRT0.staged_predict(X_train)):\n",
    "    TrainErrGBRT0[b]=1-r2_score(Y_train,Y_pred) \n",
    "for b,Y_pred in enumerate(GBRT0.staged_predict(X_test)):\n",
    "    TestErrGBRT0[b]=1-r2_score(Y_test,Y_pred) \n",
    "\n",
    "plt.plot(np.arange(B),TrainErrAdaB,linestyle='--',label=\"AdaBoost回归树(训练)\",linewidth=0.8)\n",
    "plt.plot(np.arange(B),TestErrAdaB,linestyle='--',label=\"AdaBoost回归树(测试)\",linewidth=2)\n",
    "plt.plot(np.arange(B),TrainErrGBRT,linestyle='-',label=\"梯度提升回归树(训练)\",linewidth=0.8)\n",
    "plt.plot(np.arange(B),TestErrGBRT,linestyle='-',label=\"梯度提升回归树(测试)\",linewidth=2)\n",
    "plt.plot(np.arange(B),TrainErrGBRT0,linestyle='-.',label=\"复杂梯度提升回归树(训练)\",linewidth=0.8)\n",
    "plt.plot(np.arange(B),TestErrGBRT0,linestyle='-.',label=\"复杂梯度提升回归树(测试)\",linewidth=2)\n",
    "plt.title(\"梯度提升回归树和AdaBoost回归树\")\n",
    "plt.xlabel(\"弱模型个数\")\n",
    "plt.ylabel(\"误差\")\n",
    "plt.legend()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "说明：基于模拟数据对比梯度提升算法和提升策略回归树的预测性能。\n",
    "1、利用make_regression生成样本量等于1000，包括10个数据变量，输出变量为数值型的数据集。利用旁置法划分训练集和测试集。\n",
    "2、计算迭代次数增加至300过程中，提升策略回归树和梯度提升回归树的训练误差和测试误差。两者的集成学习器相同。\n",
    "3、计算迭代次数增加至300过程中，基础学习器为较复杂模型下，提升策略回归树的训练误差和测试误差。\n",
    "4、对计算结果绘制折线图。图形显示，梯度提升树的误差均低于提升策略回归树，同时，基础学习器较为复杂的梯度提升树，能够在迭代次数较少时就获得较低的误差。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
